Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6
[pandora-kernel.git] / scripts / coccinelle / api / err_cast.cocci
1 ///
2 /// Use ERR_CAST inlined function instead of ERR_PTR(PTR_ERR(...))
3 ///
4 // Confidence: High
5 // Copyright: (C) 2009, 2010 Nicolas Palix, DIKU.  GPLv2.
6 // Copyright: (C) 2009, 2010 Julia Lawall, DIKU.  GPLv2.
7 // Copyright: (C) 2009, 2010 Gilles Muller, INRIA/LiP6.  GPLv2.
8 // URL: http://coccinelle.lip6.fr/
9 // Options:
10 //
11 // Keywords: ERR_PTR, PTR_ERR, ERR_CAST
12 // Version min: 2.6.25
13 //
14
15 virtual context
16 virtual patch
17 virtual org
18 virtual report
19
20
21 @ depends on context && !patch && !org && !report@
22 expression x;
23 @@
24
25 * ERR_PTR(PTR_ERR(x))
26
27 @ depends on !context && patch && !org && !report @
28 expression x;
29 @@
30
31 - ERR_PTR(PTR_ERR(x))
32 + ERR_CAST(x)
33
34 @r depends on !context && !patch && (org || report)@
35 expression x;
36 position p;
37 @@
38
39  ERR_PTR@p(PTR_ERR(x))
40
41 @script:python depends on org@
42 p << r.p;
43 x << r.x;
44 @@
45
46 msg="WARNING ERR_CAST can be used with %s" % (x)
47 msg_safe=msg.replace("[","@(").replace("]",")")
48 coccilib.org.print_todo(p[0], msg_safe)
49
50 @script:python depends on report@
51 p << r.p;
52 x << r.x;
53 @@
54
55 msg="WARNING: ERR_CAST can be used with %s" % (x)
56 coccilib.report.print_report(p[0], msg)