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