1// SPDX-License-Identifier: GPL-2.0-only
2/// Since commit b37a46683739 ("netdevice: add the case if dev is NULL"),
3/// NULL check before dev_{put, hold} functions is not needed.
4///
5/// Based on ifnullfree.cocci by Fabian Frederick.
6///
7// Copyright: (C) 2022 Ziyang Xuan.
8// Comments: -
9// Options: --no-includes --include-headers
10// Version min: 5.15
11
12virtual patch
13virtual org
14virtual report
15virtual context
16
17@r2 depends on patch@
18expression E;
19@@
20- if (E != NULL)
21(
22  __dev_put(E);
23|
24  dev_put(E);
25|
26  dev_put_track(E, ...);
27|
28  __dev_hold(E);
29|
30  dev_hold(E);
31|
32  dev_hold_track(E, ...);
33)
34
35@r depends on context || report || org @
36expression E;
37position p;
38@@
39
40* if (E != NULL)
41*	\(__dev_put@p\|dev_put@p\|dev_put_track@p\|__dev_hold@p\|dev_hold@p\|
42*         dev_hold_track@p\)(E, ...);
43
44@script:python depends on org@
45p << r.p;
46@@
47
48cocci.print_main("NULL check before dev_{put, hold} functions is not needed", p)
49
50@script:python depends on report@
51p << r.p;
52@@
53
54msg = "WARNING: NULL check before dev_{put, hold} functions is not needed."
55coccilib.report.print_report(p[0], msg)
56