Linux 4.16.11
[linux/fpc-iii.git] / scripts / coccinelle / misc / bugon.cocci
blob741586094abe08be1ebea5c81ad57e4c5ff066fa
1 /// Use BUG_ON instead of a if condition followed by BUG.
2 ///
3 //# This makes an effort to find cases where BUG() follows an if
4 //# condition on an expression and replaces the if condition and BUG()
5 //# with a BUG_ON having the conditional expression of the if statement
6 //# as argument.
7 //
8 // Confidence: High
9 // Copyright: (C) 2014 Himangi Saraogi.  GPLv2.
10 // Comments:
11 // Options: --no-includes --include-headers
13 virtual patch
14 virtual context
15 virtual org
16 virtual report
18 //----------------------------------------------------------
19 //  For context mode
20 //----------------------------------------------------------
22 @depends on context@
23 expression e;
26 *if (e) BUG();
28 //----------------------------------------------------------
29 //  For patch mode
30 //----------------------------------------------------------
32 @depends on patch@
33 expression e;
36 -if (e) BUG();
37 +BUG_ON(e);
39 //----------------------------------------------------------
40 //  For org and report mode
41 //----------------------------------------------------------
43 @r depends on (org || report)@
44 expression e;
45 position p;
48  if (e) BUG@p ();
50 @script:python depends on org@
51 p << r.p;
54 coccilib.org.print_todo(p[0], "WARNING use BUG_ON")
56 @script:python depends on report@
57 p << r.p;
60 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)"
61 coccilib.report.print_report(p[0], msg)