Merge tag 'du-next-20210105' of git://linuxtv.org/pinchartl/media into drm-next
[linux-2.6-microblaze.git] / scripts / coccinelle / misc / bugon.cocci
1 // SPDX-License-Identifier: GPL-2.0-only
2 /// Use BUG_ON instead of a if condition followed by BUG.
3 ///
4 //# This makes an effort to find cases where BUG() follows an if
5 //# condition on an expression and replaces the if condition and BUG()
6 //# with a BUG_ON having the conditional expression of the if statement
7 //# as argument.
8 //
9 // Confidence: High
10 // Copyright: (C) 2014 Himangi Saraogi.
11 // Comments:
12 // Options: --no-includes --include-headers
13
14 virtual patch
15 virtual context
16 virtual org
17 virtual report
18
19 //----------------------------------------------------------
20 //  For context mode
21 //----------------------------------------------------------
22
23 @depends on context@
24 expression e;
25 @@
26
27 *if (e) BUG();
28
29 //----------------------------------------------------------
30 //  For patch mode
31 //----------------------------------------------------------
32
33 @depends on patch@
34 expression e;
35 @@
36
37 -if (e) BUG();
38 +BUG_ON(e);
39
40 //----------------------------------------------------------
41 //  For org and report mode
42 //----------------------------------------------------------
43
44 @r depends on (org || report)@
45 expression e;
46 position p;
47 @@
48
49  if (e) BUG@p ();
50
51 @script:python depends on org@
52 p << r.p;
53 @@
54
55 coccilib.org.print_todo(p[0], "WARNING use BUG_ON")
56
57 @script:python depends on report@
58 p << r.p;
59 @@
60
61 msg="WARNING: Use BUG_ON instead of if condition followed by BUG.\nPlease make sure the condition has no side effects (see conditional BUG_ON definition in include/asm-generic/bug.h)"
62 coccilib.report.print_report(p[0], msg)
63