1/// Use WARN(1,...) rather than printk followed by WARN_ON(1) 2/// 3// Confidence: High 4// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6. GPLv2. 5// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. GPLv2. 6// URL: http://coccinelle.lip6.fr/ 7// Comments: 8// Options: --no-includes --include-headers 9 10virtual patch 11virtual context 12virtual org 13virtual report 14 15@bad1@ 16position p; 17@@ 18 19printk(...); 20printk@p(...); 21WARN_ON(1); 22 23@r1 depends on context || report || org@ 24position p != bad1.p; 25@@ 26 27 printk@p(...); 28*WARN_ON(1); 29 30@script:python depends on org@ 31p << r1.p; 32@@ 33 34cocci.print_main("printk + WARN_ON can be just WARN",p) 35 36@script:python depends on report@ 37p << r1.p; 38@@ 39 40msg = "SUGGESTION: printk + WARN_ON can be just WARN" 41coccilib.report.print_report(p[0],msg) 42 43@ok1 depends on patch@ 44expression list es; 45position p != bad1.p; 46@@ 47 48-printk@p( 49+WARN(1, 50 es); 51-WARN_ON(1); 52 53@depends on patch@ 54expression list ok1.es; 55@@ 56 57if (...) 58- { 59 WARN(1,es); 60- } 61 62// -------------------------------------------------------------------- 63 64@bad2@ 65position p; 66@@ 67 68printk(...); 69printk@p(...); 70WARN_ON_ONCE(1); 71 72@r2 depends on context || report || org@ 73position p != bad1.p; 74@@ 75 76 printk@p(...); 77*WARN_ON_ONCE(1); 78 79@script:python depends on org@ 80p << r2.p; 81@@ 82 83cocci.print_main("printk + WARN_ON_ONCE can be just WARN_ONCE",p) 84 85@script:python depends on report@ 86p << r2.p; 87@@ 88 89msg = "SUGGESTION: printk + WARN_ON_ONCE can be just WARN_ONCE" 90coccilib.report.print_report(p[0],msg) 91 92@ok2 depends on patch@ 93expression list es; 94position p != bad2.p; 95@@ 96 97-printk@p( 98+WARN_ONCE(1, 99 es); 100-WARN_ON_ONCE(1); 101 102@depends on patch@ 103expression list ok2.es; 104@@ 105 106if (...) 107- { 108 WARN_ONCE(1,es); 109- } 110