public inbox for drm-ai-reviews@public-inbox.freedesktop.org
 help / color / mirror / Atom feed
From: Philipp Hahn <phahn-oss@avm.de>
To: amd-gfx@lists.freedesktop.org, apparmor@lists.ubuntu.com,
	bpf@vger.kernel.org, ceph-devel@vger.kernel.org, cocci@inria.fr,
	dm-devel@lists.linux.dev, dri-devel@lists.freedesktop.org,
	gfs2@lists.linux.dev, intel-gfx@lists.freedesktop.org,
	intel-wired-lan@lists.osuosl.org, iommu@lists.linux.dev,
	kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-block@vger.kernel.org, linux-bluetooth@vger.kernel.org,
	linux-btrfs@vger.kernel.org, linux-cifs@vger.kernel.org,
	linux-clk@vger.kernel.org, linux-erofs@lists.ozlabs.org,
	linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linux-gpio@vger.kernel.org, linux-hyperv@vger.kernel.org,
	linux-input@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-leds@vger.kernel.org, linux-media@vger.kernel.org,
	linux-mips@vger.kernel.org, linux-mm@kvack.org,
	linux-modules@vger.kernel.org, linux-mtd@lists.infradead.org,
	linux-nfs@vger.kernel.org, linux-omap@vger.kernel.org,
	linux-phy@lists.infradead.org, linux-pm@vger.kernel.org,
	linux-rockchip@lists.infradead.org, linux-s390@vger.kernel.org,
	linux-scsi@vger.kernel.org, linux-sctp@vger.kernel.org,
	linux-security-module@vger.kernel.org, linux-sh@vger.kernel.org,
	linux-sound@vger.kernel.org,
	linux-stm32@st-md-mailman.stormreply.com,
	linux-trace-kernel@vger.kernel.org, linux-usb@vger.kernel.org,
	linux-wireless@vger.kernel.org, netdev@vger.kernel.org,
	ntfs3@lists.linux.dev, samba-technical@lists.samba.org,
	sched-ext@lists.linux.dev, target-devel@vger.kernel.org,
	tipc-discussion@lists.sourceforge.net, v9fs@lists.linux.dev,
	Philipp Hahn <phahn-oss@avm.de>
Cc: Julia Lawall <Julia.Lawall@inria.fr>,
	Nicolas Palix <nicolas.palix@imag.fr>
Subject: [PATCH 01/61] Coccinelle: Prefer IS_ERR_OR_NULL over manual NULL check
Date: Tue, 10 Mar 2026 12:48:27 +0100	[thread overview]
Message-ID: <20260310-b4-is_err_or_null-v1-1-bd63b656022d@avm.de> (raw)
In-Reply-To: <20260310-b4-is_err_or_null-v1-0-bd63b656022d@avm.de>

Find and convert uses of IS_ERR() plus NULL check to IS_ERR_OR_NULL().

There are several cases where `!ptr && WARN_ON[_ONCE](IS_ERR(ptr))` is
used:
- arch/x86/kernel/callthunks.c:215 WARN_ON_ONCE
- drivers/clk/clk.c:4561 WARN_ON_ONCE
- drivers/interconnect/core.c:793 WARN_ON
- drivers/reset/core.c:718 WARN_ON
The change is not 100% semantical equivalent as the warning will now
also happen when the pointer is NULL.

To: Julia Lawall <Julia.Lawall@inria.fr>
To: Nicolas Palix <nicolas.palix@imag.fr>
Cc: cocci@inria.fr
Cc: linux-kernel@vger.kernel.org

---
drivers/clocksource/mips-gic-timer.c:283 looks suspicious: ret != clk,
but Daniel Lezcano verified it as cottect.

There are some cases where the checks are part of a larger expression:
- mm/kmemleak.c:1095
- mm/kmemleak.c:1155
- mm/kmemleak.c:1173
- mm/kmemleak.c:1290
- mm/kmemleak.c:1328
- mm/kmemleak.c:1241
- mm/kmemleak.c:1310
- mm/kmemleak.c:1258
- net/netlink/af_netlink.c:2670
Thanks to Julia Lawall for the help to also handle them.

Signed-off-by: Philipp Hahn <phahn-oss@avm.de>
---
 scripts/coccinelle/api/is_err_or_null.cocci | 125 ++++++++++++++++++++++++++++
 1 file changed, 125 insertions(+)

diff --git a/scripts/coccinelle/api/is_err_or_null.cocci b/scripts/coccinelle/api/is_err_or_null.cocci
new file mode 100644
index 0000000000000000000000000000000000000000..7a430eadccd9f9f28b1711d67dd87a817a45bd52
--- /dev/null
+++ b/scripts/coccinelle/api/is_err_or_null.cocci
@@ -0,0 +1,125 @@
+// SPDX-License-Identifier: GPL-2.0-only
+///
+/// Use IF_ERR_OR_NULL() instead of IS_ERR() plus a check for (not) NULL
+///
+// Copyright: (C) 2026 Philipp Hahn, FRITZ! Technology GmbH.
+// Confidence: High
+// Options: --no-includes --include-headers
+// Keywords: IS_ERR, IS_ERR_OR_NULL
+
+virtual patch
+virtual report
+virtual org
+
+@p1 depends on patch@
+expression E;
+@@
+(
+-	E != NULL && !IS_ERR(E)
++	!IS_ERR_OR_NULL(E)
+|
+-	E == NULL || IS_ERR(E)
++	IS_ERR_OR_NULL(E)
+|
+-	!IS_ERR(E) && E != NULL
++	!IS_ERR_OR_NULL(E)
+|
+-	IS_ERR(E) || E == NULL
++	IS_ERR_OR_NULL(E)
+)
+
+@p2 depends on patch@
+expression E;
+@@
+(
+-	E == NULL || WARN_ON(IS_ERR(E))
++	WARN_ON(IS_ERR_OR_NULL(E))
+|
+-	E == NULL || WARN_ON_ONCE(IS_ERR(E))
++	WARN_ON_ONCE(IS_ERR_OR_NULL(E))
+)
+
+@p3 depends on patch@
+expression E,e1;
+@@
+(
+-	e1 && E != NULL && !IS_ERR(E)
++	e1 && !IS_ERR_OR_NULL(E)
+|
+-	e1 || E == NULL || IS_ERR(E)
++	e1 || IS_ERR_OR_NULL(E)
+|
+-	e1 && !IS_ERR(E) && E != NULL
++	e1 && !IS_ERR_OR_NULL(E)
+|
+-	e1 || IS_ERR(E) || E == NULL
++	e1 || IS_ERR_OR_NULL(E)
+)
+
+@r1 depends on report || org@
+expression E;
+position p;
+@@
+(
+ 	E != NULL && ... && !IS_ERR@p(E)
+|
+ 	E == NULL || ... || IS_ERR@p(E)
+|
+ 	!IS_ERR@p(E) && ... && E != NULL
+|
+ 	IS_ERR@p(E) || ... || E == NULL
+)
+
+@script:python depends on report@
+p << r1.p;
+@@
+coccilib.report.print_report(p[0], "opportunity for IS_ERR_OR_NULL()")
+
+@script:python depends on org@
+p << r1.p;
+@@
+coccilib.org.print_todo(p[0], "opportunity for IS_ERR_OR_NULL()")
+
+@p4 depends on patch@
+identifier I;
+expression E;
+@@
+(
+-	(I = E) != NULL && !IS_ERR(I)
++	!IS_ERR_OR_NULL((I = E))
+|
+-	(I = E) == NULL || IS_ERR(I)
++	IS_ERR_OR_NULL((I = E))
+)
+
+@r2 depends on report || org@
+identifier I;
+expression E;
+position p;
+@@
+(
+*	(I = E) != NULL && ... && !IS_ERR@p(I)
+|
+*	(I = E) == NULL || ... || IS_ERR@p(I)
+)
+
+@script:python depends on report@
+p << r2.p;
+@@
+coccilib.report.print_report(p[0], "opportunity for IS_ERR_OR_NULL()")
+
+@script:python depends on org@
+p << r2.p;
+@@
+coccilib.org.print_todo(p[0], "opportunity for IS_ERR_OR_NULL()")
+
+@p5 depends on patch disable unlikely @
+expression E;
+@@
+-\( likely \| unlikely \)(
+(
+ IS_ERR_OR_NULL(E)
+|
+ !IS_ERR_OR_NULL(E)
+)
+-)

-- 
2.43.0


  reply	other threads:[~2026-03-11  8:05 UTC|newest]

Thread overview: 131+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-10 11:48 [PATCH 00/61] treewide: Use IS_ERR_OR_NULL over manual NULL check - refactor Philipp Hahn
2026-03-10 11:48 ` Philipp Hahn [this message]
2026-03-10 15:41   ` [PATCH 01/61] Coccinelle: Prefer IS_ERR_OR_NULL over manual NULL check Markus Elfring
2026-03-11 21:27     ` Claude review: " Claude Code Review Bot
2026-03-11 15:12   ` Markus Elfring
2026-03-10 11:48 ` [PATCH 02/61] btrfs: " Philipp Hahn
2026-03-11 21:27   ` Claude review: " Claude Code Review Bot
2026-03-10 11:48 ` [PATCH 03/61] ceph: " Philipp Hahn
2026-03-10 18:13   ` Viacheslav Dubeyko
2026-03-11  8:16   ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-10 11:48 ` [PATCH 04/61] ext4: " Philipp Hahn
2026-03-11 21:27   ` Claude review: " Claude Code Review Bot
2026-03-10 11:48 ` [PATCH 05/61] smb: Prefer IS_ERR_OR_NULL over manual NULl check Philipp Hahn
2026-03-11 21:27   ` Claude review: " Claude Code Review Bot
2026-03-10 11:48 ` [PATCH 06/61] 9p: Prefer IS_ERR_OR_NULL over manual NULL check Philipp Hahn
2026-03-10 13:45   ` Christian Schoenebeck
2026-03-11  8:17   ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-10 11:48 ` [PATCH 07/61] erofs: " Philipp Hahn
2026-03-11 21:27   ` Claude review: " Claude Code Review Bot
2026-03-10 11:48 ` [PATCH 08/61] fuse: " Philipp Hahn
2026-03-11  8:18   ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-10 11:48 ` [PATCH 09/61] ntfs3: " Philipp Hahn
2026-03-10 11:48 ` [PATCH 10/61] gfs2: " Philipp Hahn
2026-03-11 21:27   ` Claude review: " Claude Code Review Bot
2026-03-10 11:48 ` [PATCH 11/61] pstore: " Philipp Hahn
2026-03-10 11:48 ` [PATCH 12/61] quota: " Philipp Hahn
2026-03-11  8:19   ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-10 11:48 ` [PATCH 13/61] squashfs: " Philipp Hahn
2026-03-11  8:19   ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-10 11:48 ` [PATCH 14/61] seq_file: " Philipp Hahn
2026-03-11 21:27   ` Claude review: " Claude Code Review Bot
2026-03-10 11:48 ` [PATCH 15/61] trace: " Philipp Hahn
2026-03-10 14:07   ` Steven Rostedt
2026-03-11  5:13     ` Masami Hiramatsu (Google)
2026-03-11 14:03       ` Steven Rostedt
2026-03-11 14:06         ` Geert Uytterhoeven
2026-03-10 11:48 ` [PATCH 16/61] sched: " Philipp Hahn
2026-03-11  9:16   ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-10 11:48 ` [PATCH 17/61] module: " Philipp Hahn
2026-03-10 14:45   ` Aaron Tomlin
2026-03-11  9:18   ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-10 11:48 ` [PATCH 18/61] sound: " Philipp Hahn
2026-03-10 12:28   ` Mark Brown
2026-03-10 11:48 ` [PATCH 19/61] kvm: " Philipp Hahn
2026-03-10 11:48 ` [PATCH 20/61] apparmor: " Philipp Hahn
2026-03-10 11:48 ` [PATCH 21/61] lib/test: " Philipp Hahn
2026-03-10 11:48 ` [PATCH 22/61] md: " Philipp Hahn
2026-03-11  9:19   ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-11 21:27   ` Claude review: " Claude Code Review Bot
2026-03-10 11:48 ` [PATCH 23/61] net/ipv6: " Philipp Hahn
2026-03-10 11:48 ` [PATCH 24/61] net/9p: " Philipp Hahn
2026-03-10 13:47   ` Christian Schoenebeck
2026-03-11  9:19   ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-10 11:48 ` [PATCH 25/61] net/bluetooth: " Philipp Hahn
2026-03-10 13:55   ` Bastien Nocera
2026-03-11  9:21   ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-10 11:48 ` [PATCH 26/61] net/core: " Philipp Hahn
2026-03-10 11:48 ` [PATCH 27/61] net/netlink: " Philipp Hahn
2026-03-10 11:48 ` [PATCH 28/61] net/sched: " Philipp Hahn
2026-03-11  9:22   ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-10 11:48 ` [PATCH 29/61] net/sctp: " Philipp Hahn
2026-03-10 11:48 ` [PATCH 30/61] net/sunrpc: " Philipp Hahn
2026-03-10 12:23   ` Jeff Layton
2026-03-10 13:23   ` Chuck Lever
2026-03-11  9:22   ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-10 11:48 ` [PATCH 31/61] net/tipc: " Philipp Hahn
2026-03-10 11:48 ` [PATCH 32/61] net/wireless: " Philipp Hahn
2026-03-10 11:48 ` [PATCH 33/61] mm: " Philipp Hahn
2026-03-11 21:27   ` Claude review: " Claude Code Review Bot
2026-03-10 11:49 ` [PATCH 34/61] arch/arm: " Philipp Hahn
2026-03-10 11:49 ` [PATCH 35/61] arch/mips: " Philipp Hahn
2026-03-10 11:49 ` [PATCH 36/61] arch/sh: " Philipp Hahn
2026-03-11 13:15   ` Geert Uytterhoeven
2026-03-10 11:49 ` [PATCH 37/61] drm: " Philipp Hahn
2026-03-10 12:08   ` Christian König
2026-03-10 12:40     ` Jani Nikula
2026-03-11 21:27     ` Claude review: " Claude Code Review Bot
2026-03-10 11:49 ` [PATCH 38/61] net: " Philipp Hahn
2026-03-10 15:07   ` [EXTERNAL] " Elad Nachman
2026-03-11  0:16   ` Russell King (Oracle)
2026-03-11 21:27     ` Claude review: " Claude Code Review Bot
2026-03-11  9:24   ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-10 11:49 ` [PATCH 39/61] irqchip: " Philipp Hahn
2026-03-11  9:24   ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-10 11:49 ` [PATCH 40/61] phy: " Philipp Hahn
2026-03-10 11:49 ` [PATCH 41/61] pinctrl: " Philipp Hahn
2026-03-11  9:32   ` Linus Walleij
2026-03-10 11:49 ` [PATCH 42/61] pmdomain: " Philipp Hahn
2026-03-10 11:49 ` [PATCH 43/61] s390: " Philipp Hahn
2026-03-10 11:49 ` [PATCH 44/61] target: " Philipp Hahn
2026-03-11 21:27   ` Claude review: " Claude Code Review Bot
2026-03-10 11:49 ` [PATCH 45/61] thermal: " Philipp Hahn
2026-03-10 11:49 ` [PATCH 46/61] vfio: " Philipp Hahn
2026-03-10 12:53   ` Pranjal Shrivastava
2026-03-11  9:25   ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-10 11:49 ` [PATCH 47/61] nfc: " Philipp Hahn
2026-03-10 11:49 ` [PATCH 48/61] mtd: " Philipp Hahn
2026-03-10 11:49 ` [PATCH 49/61] media: " Philipp Hahn
2026-03-11  9:25   ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-10 11:49 ` [PATCH 50/61] iommu: " Philipp Hahn
2026-03-11  9:26   ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-10 11:49 ` [PATCH 51/61] leds: " Philipp Hahn
2026-03-10 13:33   ` (subset) " Lee Jones
2026-03-10 11:49 ` [PATCH 52/61] gpib: " Philipp Hahn
2026-03-10 11:49 ` [PATCH 53/61] hyperv: " Philipp Hahn
2026-03-10 11:49 ` [PATCH 54/61] aoe: " Philipp Hahn
2026-03-11  9:26   ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-10 11:49 ` [PATCH 55/61] interconnect: " Philipp Hahn
2026-03-11 21:27   ` Claude review: " Claude Code Review Bot
2026-03-10 11:49 ` [PATCH 56/61] clk: " Philipp Hahn
2026-03-10 13:21   ` Brian Masney
2026-03-11 21:27     ` Claude review: " Claude Code Review Bot
2026-03-11  2:07   ` Chen-Yu Tsai
2026-03-10 11:49 ` [PATCH 57/61] reset: " Philipp Hahn
2026-03-10 12:43   ` Philipp Zabel
2026-03-11 21:27     ` Claude review: " Claude Code Review Bot
2026-03-11  4:59   ` Masami Hiramatsu (Google)
2026-03-10 11:49 ` [PATCH 58/61] arch/x86: " Philipp Hahn
2026-03-11 21:27   ` Claude review: " Claude Code Review Bot
2026-03-10 11:49 ` [PATCH 59/61] debugobjects: Drop likely() around !IS_ERR_OR_NULL() Philipp Hahn
2026-03-11 21:27   ` Claude review: " Claude Code Review Bot
2026-03-10 11:49 ` [PATCH 60/61] Input alps: Drop unlikely() around IS_ERR_OR_NULL() Philipp Hahn
2026-03-11 21:27   ` Claude review: " Claude Code Review Bot
2026-03-10 11:49 ` [PATCH 61/61] file: " Philipp Hahn
2026-03-10 12:23   ` Jeff Layton
2026-03-11 21:27     ` Claude review: " Claude Code Review Bot
2026-03-10 14:14 ` [PATCH 00/61] treewide: Use IS_ERR_OR_NULL over manual NULL check - refactor Steven Rostedt
2026-03-10 14:23 ` Theodore Tso
2026-03-10 18:40 ` Kuan-Wei Chiu
2026-03-11 21:27   ` Claude review: " Claude Code Review Bot
2026-03-11  0:09 ` Russell King (Oracle)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260310-b4-is_err_or_null-v1-1-bd63b656022d@avm.de \
    --to=phahn-oss@avm.de \
    --cc=Julia.Lawall@inria.fr \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=apparmor@lists.ubuntu.com \
    --cc=bpf@vger.kernel.org \
    --cc=ceph-devel@vger.kernel.org \
    --cc=cocci@inria.fr \
    --cc=dm-devel@lists.linux.dev \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gfs2@lists.linux.dev \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-wired-lan@lists.osuosl.org \
    --cc=iommu@lists.linux.dev \
    --cc=kvm@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-cifs@vger.kernel.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-erofs@lists.ozlabs.org \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-modules@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-phy@lists.infradead.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=linux-sctp@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    --cc=linux-trace-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=nicolas.palix@imag.fr \
    --cc=ntfs3@lists.linux.dev \
    --cc=samba-technical@lists.samba.org \
    --cc=sched-ext@lists.linux.dev \
    --cc=target-devel@vger.kernel.org \
    --cc=tipc-discussion@lists.sourceforge.net \
    --cc=v9fs@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox