Re: [cocci] [PATCH 00/61] treewide: Use IS_ERR_OR_NULL over manual NULL check - refactor
Kuan-Wei Chiu <[email protected]> Wed, 11 Mar 2026 02:40:36 +0800
| Newsgroups | fr.inria.cocci,dev.linux.lists.dm-devel,dev.linux.lists.gfs2,dev.linux.lists.iommu,dev.linux.lists.ntfs3,dev.linux.lists.sched-ext,dev.linux.lists.v9fs,org.freedesktop.lists.amd-gfx,org.freedesktop.lists.dri-devel,org.freedesktop.lists.intel-gfx,org.infradead.lists.linux-mtd,org.infradead.lists.linux-phy,org.infradead.lists.linux-rockchip,org.kernel.vger.bpf,org.kernel.vger.ceph-devel,org.kernel.vger.kvm,org.kernel.vger.linux-block,org.kernel.vger.linux-bluetooth,org.kernel.vger.linux-btrfs,org.kernel.vger.linux-cifs,org.kernel.vger.linux-clk,org.kernel.vger.linux-ext4,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-gpio,org.kernel.vger.linux-hyperv,org.kernel.vger.linux-input,org.kernel.vger.linux-kernel,org.kernel.vger.linux-leds,org.kernel.vger.linux-media,org.kernel.vger.linux-mips,org.kernel.vger.linux-modules,org.kernel.vger.linux-nfs,org.kernel.vger.linux-omap,org.kernel.vger.linux-pm,org.kernel.vger.linux-s390,org.kernel.vger.linux-scsi,org.kernel.vger.linux-sctp,org.kernel.vger.linux-security-module,org.kernel.vger.linux-sh,org.kernel.vger.linux-sound,org.kernel.vger.linux-trace-kernel,org.kernel.vger.linux-usb,org.kernel.vger.linux-wireless,org.kernel.vger.netdev,org.kernel.vger.target-devel,org.kvack.linux-mm,org.osuosl.intel-wired-lan,org.ozlabs.lists.linux-erofs |
|---|---|
| Message-ID | <[email protected]> |
Hi Philipp, On Tue, Mar 10, 2026 at 12:48:26PM +0100, Philipp Hahn wrote: > While doing some static code analysis I stumbled over a common pattern, > where IS_ERR() is combined with a NULL check. For that there is > IS_ERR_OR_NULL(). > > I've written a Coccinelle patch to find and patch those instances. > The patches follow grouped by subsystem. > > Patches 55-58 may be dropped as they have a (minor?) semantic change: > They use WARN_ON() or WARN_ON_ONCE(), but only in the IS_ERR() path, not > for the NULL check. Iff it is okay to print the warning also for NULL, > then the patches can be applied. > > While generating the patch set `checkpatch` complained about mixing > [un]likely() with IS_ERR_OR_NULL(), which already uses likely() > internally. I found and fixed several locations, where that combination > has been used. Thanks for the patchset. However, I think we need a explanation for why switching to IS_ERR_OR_NULL() is an improvement over the existing code. IMHO, the necessity of IS_ERR_OR_NULL() often highlights a confusing or flawed API design. It usually implies that the caller is unsure whether a failure results in an error pointer or a NULL pointer. Rather than doing a treewide conversion of this pattern, I believe it would be much more meaningful to review these instances case-by-case and fix the underlying APIs or caller logic instead. Additionally, a treewide refactoring like this has the practical drawback of creating unnecessary merge conflicts when backporting to stable trees. Regards, Kuan-Wei