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