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 11virtual patch 12virtual context 13virtual org 14virtual report 15 16@bad1@ 17position p; 18@@ 19 20printk(...); 21printk@p(...); 22WARN_ON(1); 23 24@r1 depends on context || report || org@ 25position p != bad1.p; 26@@ 27 28 printk@p(...); 29*WARN_ON(1); 30 31@script:python depends on org@ 32p << r1.p; 33@@ 34 35cocci.print_main("printk + WARN_ON can be just WARN",p) 36 37@script:python depends on report@ 38p << r1.p; 39@@ 40 41msg = "SUGGESTION: printk + WARN_ON can be just WARN" 42coccilib.report.print_report(p[0],msg) 43 44@ok1 depends on patch@ 45expression list es; 46position p != bad1.p; 47@@ 48 49-printk@p( 50+WARN(1, 51 es); 52-WARN_ON(1); 53 54@depends on patch@ 55expression list ok1.es; 56@@ 57 58if (...) 59- { 60 WARN(1,es); 61- } 62 63// -------------------------------------------------------------------- 64 65@bad2@ 66position p; 67@@ 68 69printk(...); 70printk@p(...); 71WARN_ON_ONCE(1); 72 73@r2 depends on context || report || org@ 74position p != bad1.p; 75@@ 76 77 printk@p(...); 78*WARN_ON_ONCE(1); 79 80@script:python depends on org@ 81p << r2.p; 82@@ 83 84cocci.print_main("printk + WARN_ON_ONCE can be just WARN_ONCE",p) 85 86@script:python depends on report@ 87p << r2.p; 88@@ 89 90msg = "SUGGESTION: printk + WARN_ON_ONCE can be just WARN_ONCE" 91coccilib.report.print_report(p[0],msg) 92 93@ok2 depends on patch@ 94expression list es; 95position p != bad2.p; 96@@ 97 98-printk@p( 99+WARN_ONCE(1, 100 es); 101-WARN_ON_ONCE(1); 102 103@depends on patch@ 104expression list ok2.es; 105@@ 106 107if (...) 108- { 109 WARN_ONCE(1,es); 110- } 111