xref: /openbmc/linux/scripts/coccinelle/misc/cstptr.cocci (revision 4a05f067528610cfd41eb158225db697ae726d51)
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