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