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