162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/// Since commit b37a46683739 ("netdevice: add the case if dev is NULL"),
362306a36Sopenharmony_ci/// NULL check before dev_{put, hold} functions is not needed.
462306a36Sopenharmony_ci///
562306a36Sopenharmony_ci/// Based on ifnullfree.cocci by Fabian Frederick.
662306a36Sopenharmony_ci///
762306a36Sopenharmony_ci// Copyright: (C) 2022 Ziyang Xuan.
862306a36Sopenharmony_ci// Comments: -
962306a36Sopenharmony_ci// Options: --no-includes --include-headers
1062306a36Sopenharmony_ci// Version min: 5.15
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_civirtual patch
1362306a36Sopenharmony_civirtual org
1462306a36Sopenharmony_civirtual report
1562306a36Sopenharmony_civirtual context
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci@r2 depends on patch@
1862306a36Sopenharmony_ciexpression E;
1962306a36Sopenharmony_ci@@
2062306a36Sopenharmony_ci- if (E != NULL)
2162306a36Sopenharmony_ci(
2262306a36Sopenharmony_ci  __dev_put(E);
2362306a36Sopenharmony_ci|
2462306a36Sopenharmony_ci  dev_put(E);
2562306a36Sopenharmony_ci|
2662306a36Sopenharmony_ci  dev_put_track(E, ...);
2762306a36Sopenharmony_ci|
2862306a36Sopenharmony_ci  __dev_hold(E);
2962306a36Sopenharmony_ci|
3062306a36Sopenharmony_ci  dev_hold(E);
3162306a36Sopenharmony_ci|
3262306a36Sopenharmony_ci  dev_hold_track(E, ...);
3362306a36Sopenharmony_ci)
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci@r depends on context || report || org @
3662306a36Sopenharmony_ciexpression E;
3762306a36Sopenharmony_ciposition p;
3862306a36Sopenharmony_ci@@
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci* if (E != NULL)
4162306a36Sopenharmony_ci*	\(__dev_put@p\|dev_put@p\|dev_put_track@p\|__dev_hold@p\|dev_hold@p\|
4262306a36Sopenharmony_ci*         dev_hold_track@p\)(E, ...);
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci@script:python depends on org@
4562306a36Sopenharmony_cip << r.p;
4662306a36Sopenharmony_ci@@
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_cicocci.print_main("NULL check before dev_{put, hold} functions is not needed", p)
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci@script:python depends on report@
5162306a36Sopenharmony_cip << r.p;
5262306a36Sopenharmony_ci@@
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_cimsg = "WARNING: NULL check before dev_{put, hold} functions is not needed."
5562306a36Sopenharmony_cicoccilib.report.print_report(p[0], msg)
56