|  | /// Use BUG_ON instead of a if condition followed by BUG. | 
|  | /// | 
|  | //# This makes an effort to find cases where BUG() follows an if | 
|  | //# condition on an expression and replaces the if condition and BUG() | 
|  | //# with a BUG_ON having the conditional expression of the if statement | 
|  | //# as argument. | 
|  | // | 
|  | // Confidence: High | 
|  | // Copyright: (C) 2014 Himangi Saraogi.  GPLv2. | 
|  | // Comments: | 
|  | // Options: --no-includes --include-headers | 
|  |  | 
|  | virtual patch | 
|  | virtual context | 
|  | virtual org | 
|  | virtual report | 
|  |  | 
|  | //---------------------------------------------------------- | 
|  | //  For context mode | 
|  | //---------------------------------------------------------- | 
|  |  | 
|  | @depends on context@ | 
|  | expression e; | 
|  | @@ | 
|  |  | 
|  | *if (e) BUG(); | 
|  |  | 
|  | //---------------------------------------------------------- | 
|  | //  For patch mode | 
|  | //---------------------------------------------------------- | 
|  |  | 
|  | @depends on patch@ | 
|  | expression e; | 
|  | @@ | 
|  |  | 
|  | -if (e) BUG(); | 
|  | +BUG_ON(e); | 
|  |  | 
|  | //---------------------------------------------------------- | 
|  | //  For org and report mode | 
|  | //---------------------------------------------------------- | 
|  |  | 
|  | @r depends on (org || report)@ | 
|  | expression e; | 
|  | position p; | 
|  | @@ | 
|  |  | 
|  | if (e) BUG@p (); | 
|  |  | 
|  | @script:python depends on org@ | 
|  | p << r.p; | 
|  | @@ | 
|  |  | 
|  | coccilib.org.print_todo(p[0], "WARNING use BUG_ON") | 
|  |  | 
|  | @script:python depends on report@ | 
|  | p << r.p; | 
|  | @@ | 
|  |  | 
|  | 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)" | 
|  | coccilib.report.print_report(p[0], msg) | 
|  |  |