1*4a05f067SJulia Lawall/// PTR_ERR should be applied before its argument is reassigned, typically 2*4a05f067SJulia Lawall/// to NULL 3*4a05f067SJulia Lawall/// 4*4a05f067SJulia Lawall// Confidence: High 5*4a05f067SJulia Lawall// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6. GPLv2. 6*4a05f067SJulia Lawall// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2. 7*4a05f067SJulia Lawall// URL: http://coccinelle.lip6.fr/ 8*4a05f067SJulia Lawall// Comments: 9*4a05f067SJulia Lawall// Options: -no_includes -include_headers 10*4a05f067SJulia Lawall 11*4a05f067SJulia Lawallvirtual org 12*4a05f067SJulia Lawallvirtual report 13*4a05f067SJulia Lawallvirtual context 14*4a05f067SJulia Lawall 15*4a05f067SJulia Lawall@r exists@ 16*4a05f067SJulia Lawallexpression e,e1; 17*4a05f067SJulia Lawallconstant c; 18*4a05f067SJulia Lawallposition p1,p2; 19*4a05f067SJulia Lawall@@ 20*4a05f067SJulia Lawall 21*4a05f067SJulia Lawall*e@p1 = c 22*4a05f067SJulia Lawall... when != e = e1 23*4a05f067SJulia Lawall when != &e 24*4a05f067SJulia Lawall when != true IS_ERR(e) 25*4a05f067SJulia Lawall*PTR_ERR@p2(e) 26*4a05f067SJulia Lawall 27*4a05f067SJulia Lawall@script:python depends on org@ 28*4a05f067SJulia Lawallp1 << r.p1; 29*4a05f067SJulia Lawallp2 << r.p2; 30*4a05f067SJulia Lawall@@ 31*4a05f067SJulia Lawall 32*4a05f067SJulia Lawallcocci.print_main("PTR_ERR",p2) 33*4a05f067SJulia Lawallcocci.print_secs("assignment",p1) 34*4a05f067SJulia Lawall 35*4a05f067SJulia Lawall@script:python depends on report@ 36*4a05f067SJulia Lawallp1 << r.p1; 37*4a05f067SJulia Lawallp2 << r.p2; 38*4a05f067SJulia Lawall@@ 39*4a05f067SJulia Lawall 40*4a05f067SJulia Lawallmsg = "ERROR: PTR_ERR applied after initialization to constant on line %s" % (p1[0].line) 41*4a05f067SJulia Lawallcoccilib.report.print_report(p2[0],msg) 42