Linux 4.1.16
[linux/fpc-iii.git] / scripts / coccinelle / tests / odd_ptr_err.cocci
blobcfe0a35cf2dd219090d6186996fd3a5ca6b94fda
1 /// PTR_ERR should access the value just tested by IS_ERR
2 //# There can be false positives in the patch case, where it is the call
3 //# IS_ERR that is wrong.
4 ///
5 // Confidence: High
6 // Copyright: (C) 2012 Julia Lawall, INRIA.  GPLv2.
7 // Copyright: (C) 2012 Gilles Muller, INRIA.  GPLv2.
8 // URL: http://coccinelle.lip6.fr/
9 // Comments:
10 // Options: --no-includes --include-headers
12 virtual patch
13 virtual context
14 virtual org
15 virtual report
17 @depends on patch@
18 expression e,e1;
22 if (IS_ERR(e)) { ... PTR_ERR(e) ... }
24 if (IS_ERR(e=e1)) { ... PTR_ERR(e) ... }
26 if (IS_ERR(e))
27  { ...
28   PTR_ERR(
29 -   e1
30 +   e
31   )
32    ... }
35 @r depends on !patch@
36 expression e,e1;
37 position p1,p2;
41 if (IS_ERR(e)) { ... PTR_ERR(e) ... }
43 if (IS_ERR(e=e1)) { ... PTR_ERR(e) ... }
45 *if (IS_ERR@p1(e))
46  { ...
47 *  PTR_ERR@p2(e1)
48    ... }
51 @script:python depends on org@
52 p1 << r.p1;
53 p2 << r.p2;
56 cocci.print_main("inconsistent IS_ERR and PTR_ERR",p1)
57 cocci.print_secs("PTR_ERR",p2)
59 @script:python depends on report@
60 p1 << r.p1;
61 p2 << r.p2;
64 msg = "inconsistent IS_ERR and PTR_ERR, PTR_ERR on line %s" % (p2[0].line)
65 coccilib.report.print_report(p1[0],msg)