|  | /// Use WARN(1,...) rather than printk followed by WARN_ON(1) | 
|  | /// | 
|  | // Confidence: High | 
|  | // Copyright: (C) 2012 Julia Lawall, INRIA/LIP6.  GPLv2. | 
|  | // Copyright: (C) 2012 Gilles Muller, INRIA/LiP6.  GPLv2. | 
|  | // URL: http://coccinelle.lip6.fr/ | 
|  | // Comments: | 
|  | // Options: --no-includes --include-headers | 
|  |  | 
|  | virtual patch | 
|  | virtual context | 
|  | virtual org | 
|  | virtual report | 
|  |  | 
|  | @bad1@ | 
|  | position p; | 
|  | @@ | 
|  |  | 
|  | printk(...); | 
|  | printk@p(...); | 
|  | WARN_ON(1); | 
|  |  | 
|  | @r1 depends on context || report || org@ | 
|  | position p != bad1.p; | 
|  | @@ | 
|  |  | 
|  | printk@p(...); | 
|  | *WARN_ON(1); | 
|  |  | 
|  | @script:python depends on org@ | 
|  | p << r1.p; | 
|  | @@ | 
|  |  | 
|  | cocci.print_main("printk + WARN_ON can be just WARN",p) | 
|  |  | 
|  | @script:python depends on report@ | 
|  | p << r1.p; | 
|  | @@ | 
|  |  | 
|  | msg = "SUGGESTION: printk + WARN_ON can be just WARN" | 
|  | coccilib.report.print_report(p[0],msg) | 
|  |  | 
|  | @ok1 depends on patch@ | 
|  | expression list es; | 
|  | position p != bad1.p; | 
|  | @@ | 
|  |  | 
|  | -printk@p( | 
|  | +WARN(1, | 
|  | es); | 
|  | -WARN_ON(1); | 
|  |  | 
|  | @depends on patch@ | 
|  | expression list ok1.es; | 
|  | @@ | 
|  |  | 
|  | if (...) | 
|  | - { | 
|  | WARN(1,es); | 
|  | - } | 
|  |  | 
|  | // -------------------------------------------------------------------- | 
|  |  | 
|  | @bad2@ | 
|  | position p; | 
|  | @@ | 
|  |  | 
|  | printk(...); | 
|  | printk@p(...); | 
|  | WARN_ON_ONCE(1); | 
|  |  | 
|  | @r2 depends on context || report || org@ | 
|  | position p != bad1.p; | 
|  | @@ | 
|  |  | 
|  | printk@p(...); | 
|  | *WARN_ON_ONCE(1); | 
|  |  | 
|  | @script:python depends on org@ | 
|  | p << r2.p; | 
|  | @@ | 
|  |  | 
|  | cocci.print_main("printk + WARN_ON_ONCE can be just WARN_ONCE",p) | 
|  |  | 
|  | @script:python depends on report@ | 
|  | p << r2.p; | 
|  | @@ | 
|  |  | 
|  | msg = "SUGGESTION: printk + WARN_ON_ONCE can be just WARN_ONCE" | 
|  | coccilib.report.print_report(p[0],msg) | 
|  |  | 
|  | @ok2 depends on patch@ | 
|  | expression list es; | 
|  | position p != bad2.p; | 
|  | @@ | 
|  |  | 
|  | -printk@p( | 
|  | +WARN_ONCE(1, | 
|  | es); | 
|  | -WARN_ON_ONCE(1); | 
|  |  | 
|  | @depends on patch@ | 
|  | expression list ok2.es; | 
|  | @@ | 
|  |  | 
|  | if (...) | 
|  | - { | 
|  | WARN_ONCE(1,es); | 
|  | - } |