From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail.avm.de (mail.avm.de [212.42.244.120]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1E26847887B; Tue, 10 Mar 2026 11:55:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.42.244.120 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773143759; cv=none; b=DV2iAQb1Q1q7DacC945K4HuqLieRmIshKGktJBeN4KlD/OPBY5nkVQSfuNtEr8V8/1yIJbxorZaQ5o6k9G6/yLLt7tE+JmqnMasLKrdFz7gc/rVRUBxb73l5Zss24akcYGJQy2O2KvA73oWpiJEoyw4VOswak5yPTrtbs1MSWuw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773143759; c=relaxed/simple; bh=LK3zT21XXqhQvbEwg2nItTFGXqZVrRtI29hZHPSW/Rg=; h=From:Subject:Date:Message-Id:MIME-Version:Content-Type:To:Cc; b=AA0ylodg0nQ/vLF0oMypzpRL763h7yaxJk1tUou7EISvlzD+5jIpvGbHKYBoO50EbBjvGrSv2bh2U+E5qC53CD+5dhS4TOz7ZwYnZd/dUxwPZ+8B8K/5DHhduopWdBKNHbcuhgP/GKc8lXP8WyOnkkHLjbrfSWRgI6c3RGpbSAo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=avm.de; spf=pass smtp.mailfrom=avm.de; dkim=pass (1024-bit key) header.d=avm.de header.i=@avm.de header.b=aL+mPhkh; arc=none smtp.client-ip=212.42.244.120 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=avm.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=avm.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=avm.de header.i=@avm.de header.b="aL+mPhkh" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=avm.de; s=mail; t=1773143725; bh=LK3zT21XXqhQvbEwg2nItTFGXqZVrRtI29hZHPSW/Rg=; h=From:Subject:Date:To:Cc:From; b=aL+mPhkh7Znb8K98zXuoeGotnF17rIgN5CkFwnxHnr1LUTbiqBf/oHeRr2VC7yAKi OeLFWpLUI7MPqQ4EII82k3gmbN/oqkb71EyKhn/F+ceRIjbOSMlv/KAEt6PFa+uivj OSsV+nc4xBhgCzqb5zsZR+Ek8kLdT1sgm38vQX9I= Received: from [212.42.244.71] (helo=mail.avm.de) by mail.avm.de with ESMTP (eXpurgate 4.55.2) (envelope-from ) id 69b006a9-b734-7f0000032729-7f000001bf7c-1 for ; Tue, 10 Mar 2026 12:55:23 +0100 Received: from mail-auth.avm.de (dovecot-mx-01.avm.de [212.42.244.71]) by mail.avm.de (Postfix) with ESMTPS; Tue, 10 Mar 2026 12:55:21 +0100 (CET) From: Philipp Hahn Subject: [PATCH 00/61] treewide: Use IS_ERR_OR_NULL over manual NULL check - refactor Date: Tue, 10 Mar 2026 12:48:26 +0100 Message-Id: <20260310-b4-is_err_or_null-v1-0-bd63b656022d@avm.de> Precedence: bulk X-Mailing-List: linux-btrfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-B4-Tracking: v=1; b=H4sIAAsFsGkC/x3M0QpAMBSA4VfRubYaNsyrSIvt4JRGZ5GSd7dcf hf//0BEJozQZQ8wXhRpDwlFnoFbx7CgIJ8MpSxrWUktJiUoWmS2O9twbpvQxph2bLysnILUHYw z3f+zH973A3+QboxjAAAA X-Change-ID: 20260305-b4-is_err_or_null-59998a7d03c4 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 Cc: Julia Lawall , Nicolas Palix , Chris Mason , David Sterba , Ilya Dryomov , Alex Markuze , Viacheslav Dubeyko , Theodore Ts'o , Andreas Dilger , Steve French , Paulo Alcantara , Ronnie Sahlberg , Shyam Prasad N , Tom Talpey , Bharath SM , Eric Van Hensbergen , Latchesar Ionkov , Dominique Martinet , Christian Schoenebeck , Gao Xiang , Chao Yu , Yue Hu , Jeffle Xu , Sandeep Dhavale , Hongbo Li , Chunhai Guo , Miklos Szeredi , Konstantin Komarov , Andreas Gruenbacher , Kees Cook , Tony Luck , "Guilherme G. Piccoli" , Jan Kara , Phillip Lougher , Alexander Viro , Christian Brauner , Jan Kara , Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , Tejun Heo , David Vernet , Andrea Righi , Changwoo Min , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Ben Segall , Mel Gorman , Valentin Schneider , Luis Chamberlain , Petr Pavlu , Daniel Gomez , Sami Tolvanen , Aaron Tomlin , Sylwester Nawrocki , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Max Filippov , Paolo Bonzini , John Johansen , Paul Moore , James Morris , "Serge E. Hallyn" , Andrew Morton , Alasdair Kergon , Mike Snitzer , Mikulas Patocka , Benjamin Marzinski , "David S. Miller" , David Ahern , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Marcel Holtmann , Johan Hedberg , Luiz Augusto von Dentz , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Stanislav Fomichev , Jamal Hadi Salim , Jiri Pirko , Marcelo Ricardo Leitner , Xin Long , Trond Myklebust , Anna Schumaker , Chuck Lever , Jeff Layton , NeilBrown , Olga Kornievskaia , Dai Ngo , Jon Maloy , Johannes Berg , Catalin Marinas , Russell King , John Crispin , Thomas Bogendoerfer , Yoshinori Sato , Rich Felker , John Paul Adrian Glaubitz , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Zhenyu Wang , Zhi Wang , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin , Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Andy Yan , Igor Russkikh , Andrew Lunn , Pavan Chebbi , Michael Chan , Potnuri Bharat Teja , Tony Nguyen , Przemek Kitszel , Taras Chornyi , Maxime Coquelin , Alexandre Torgue , Iyappan Subramanian , Keyur Chudgar , Quan Nguyen , Heiner Kallweit , Marc Zyngier , Thomas Gleixner , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Vinod Koul , Linus Walleij , Ulf Hansson , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , "Martin K. Petersen" , Eduardo Valentin , Keerthy , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Alex Williamson , Mark Greer , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , Shuah Khan , Kieran Bingham , Mauro Carvalho Chehab , Joerg Roedel , Will Deacon , Robin Murphy , Lee Jones , Pavel Machek , Dave Penkler , "K. Y. Srinivasan" , Haiyang Zhang , Wei Liu , Dexuan Cui , Long Li , Justin Sanders , Jens Axboe , Georgi Djakov , Michael Turquette , Stephen Boyd , Philipp Zabel , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , =?utf-8?q?Pali_Roh=C3=A1r?= , Dmitry Torokhov X-Developer-Signature: v=1; a=openpgp-sha256; l=10360; i=phahn-oss@avm.de; h=from:subject:message-id; bh=LK3zT21XXqhQvbEwg2nItTFGXqZVrRtI29hZHPSW/Rg=; b=kA0DAAoBNC0GU9GsrNsByyZiAGmwBcqh8d5mE3lAkbCCIhk2oWSgNcET++LXgLEGzX+74PInx YkBMwQAAQoAHRYhBDls8G2tYNRwNAKmmDQtBlPRrKzbBQJpsAXKAAoJEDQtBlPRrKzbYqsIAK5d elvBcseQjOmeiD4mSMAZLrcAEl20R9MpPKd4mWL5ml8BfXxNcML8Lnb2x/WwXL0Hqh2kmn+ol5+ jwvmVgqFrje1/XM4onDIIomJOYl/rYSo9qoSx+5IKZAy9eiZAEDM2imcIQKtITZKLNjFZpUiemv mdOvazQvY2blxW+Lw4Oka7Gqf4ifxsINodUwI5EJjZnPs1AWGammHryjBSpAgbnOjEtCZ7iJAEM 1l6rZhJZICWoWrt5P/y0CkrMmXMHjvK3or/XW/Oz6/UjFbEuZQMK4Nxx19avU2B1AgjKkKB7gjl xFjM+LS1mYwhLw6sC6tDl2dBVLvscyKlify3SXk= X-Developer-Key: i=phahn-oss@avm.de; a=openpgp; fpr=58AF7C2E007CDBE62C59E078F50EFDCF8AD04B1A X-purgate-ID: 149429::1773143723-EE5C1B7D-ABF931C6/0/0 X-purgate-type: clean X-purgate-size: 10362 X-purgate-Ad: Categorized by eleven eXpurgate (R) https://www.eleven.de X-purgate: This mail is considered clean (visit https://www.eleven.de for further information) X-purgate: clean 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. Signed-off-by: Philipp Hahn --- Philipp Hahn (61): Coccinelle: Prefer IS_ERR_OR_NULL over manual NULL check btrfs: Prefer IS_ERR_OR_NULL over manual NULL check ceph: Prefer IS_ERR_OR_NULL over manual NULL check ext4: Prefer IS_ERR_OR_NULL over manual NULL check smb: Prefer IS_ERR_OR_NULL over manual NULl check 9p: Prefer IS_ERR_OR_NULL over manual NULL check erofs: Prefer IS_ERR_OR_NULL over manual NULL check fuse: Prefer IS_ERR_OR_NULL over manual NULL check ntfs3: Prefer IS_ERR_OR_NULL over manual NULL check gfs2: Prefer IS_ERR_OR_NULL over manual NULL check pstore: Prefer IS_ERR_OR_NULL over manual NULL check quota: Prefer IS_ERR_OR_NULL over manual NULL check squashfs: Prefer IS_ERR_OR_NULL over manual NULL check seq_file: Prefer IS_ERR_OR_NULL over manual NULL check trace: Prefer IS_ERR_OR_NULL over manual NULL check sched: Prefer IS_ERR_OR_NULL over manual NULL check module: Prefer IS_ERR_OR_NULL over manual NULL check sound: Prefer IS_ERR_OR_NULL over manual NULL check kvm: Prefer IS_ERR_OR_NULL over manual NULL check apparmor: Prefer IS_ERR_OR_NULL over manual NULL check lib/test: Prefer IS_ERR_OR_NULL over manual NULL check md: Prefer IS_ERR_OR_NULL over manual NULL check net/ipv6: Prefer IS_ERR_OR_NULL over manual NULL check net/9p: Prefer IS_ERR_OR_NULL over manual NULL check net/bluetooth: Prefer IS_ERR_OR_NULL over manual NULL check net/core: Prefer IS_ERR_OR_NULL over manual NULL check net/netlink: Prefer IS_ERR_OR_NULL over manual NULL check net/sched: Prefer IS_ERR_OR_NULL over manual NULL check net/sctp: Prefer IS_ERR_OR_NULL over manual NULL check net/sunrpc: Prefer IS_ERR_OR_NULL over manual NULL check net/tipc: Prefer IS_ERR_OR_NULL over manual NULL check net/wireless: Prefer IS_ERR_OR_NULL over manual NULL check mm: Prefer IS_ERR_OR_NULL over manual NULL check arch/arm: Prefer IS_ERR_OR_NULL over manual NULL check arch/mips: Prefer IS_ERR_OR_NULL over manual NULL check arch/sh: Prefer IS_ERR_OR_NULL over manual NULL check drm: Prefer IS_ERR_OR_NULL over manual NULL check net: Prefer IS_ERR_OR_NULL over manual NULL check irqchip: Prefer IS_ERR_OR_NULL over manual NULL check phy: Prefer IS_ERR_OR_NULL over manual NULL check pinctrl: Prefer IS_ERR_OR_NULL over manual NULL check pmdomain: Prefer IS_ERR_OR_NULL over manual NULL check s390: Prefer IS_ERR_OR_NULL over manual NULL check target: Prefer IS_ERR_OR_NULL over manual NULL check thermal: Prefer IS_ERR_OR_NULL over manual NULL check vfio: Prefer IS_ERR_OR_NULL over manual NULL check nfc: Prefer IS_ERR_OR_NULL over manual NULL check mtd: Prefer IS_ERR_OR_NULL over manual NULL check media: Prefer IS_ERR_OR_NULL over manual NULL check iommu: Prefer IS_ERR_OR_NULL over manual NULL check leds: Prefer IS_ERR_OR_NULL over manual NULL check gpib: Prefer IS_ERR_OR_NULL over manual NULL check hyperv: Prefer IS_ERR_OR_NULL over manual NULL check aoe: Prefer IS_ERR_OR_NULL over manual NULL check interconnect: Prefer IS_ERR_OR_NULL over manual NULL check clk: Prefer IS_ERR_OR_NULL over manual NULL check reset: Prefer IS_ERR_OR_NULL over manual NULL check arch/x86: Prefer IS_ERR_OR_NULL over manual NULL check debugobjects: Drop likely() around !IS_ERR_OR_NULL() Input alps: Drop unlikely() around IS_ERR_OR_NULL() file: Drop unlikely() around IS_ERR_OR_NULL() arch/arm/common/bL_switcher.c | 2 +- arch/mips/lantiq/clk.c | 2 +- arch/sh/mm/ioremap.c | 2 +- arch/x86/kernel/callthunks.c | 2 +- arch/x86/kernel/irq.c | 2 +- drivers/block/aoe/aoecmd.c | 2 +- drivers/clk/clk.c | 4 +- drivers/clocksource/timer-pxa.c | 2 +- drivers/gpib/common/iblib.c | 2 +- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 2 +- drivers/gpu/drm/drm_sysfs.c | 2 +- drivers/gpu/drm/i915/gvt/scheduler.c | 4 +- drivers/gpu/drm/radeon/radeon_test.c | 2 +- drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c | 2 +- drivers/hv/mshv_eventfd.c | 4 +- drivers/input/mouse/alps.c | 2 +- drivers/interconnect/core.c | 2 +- drivers/iommu/omap-iommu.c | 2 +- drivers/irqchip/irq-gic-v3.c | 2 +- drivers/irqchip/irq-mvebu-odmi.c | 2 +- drivers/leds/trigger/ledtrig-tty.c | 2 +- drivers/md/dm-cache-metadata.c | 2 +- drivers/md/dm-crypt.c | 4 +- drivers/media/test-drivers/vimc/vimc-streamer.c | 2 +- drivers/mtd/nand/raw/gpio.c | 10 +- drivers/net/ethernet/aquantia/atlantic/aq_ring.c | 2 +- drivers/net/ethernet/broadcom/tg3.c | 2 +- .../net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c | 3 +- drivers/net/ethernet/intel/ice/devlink/devlink.c | 2 +- .../ethernet/marvell/prestera/prestera_router.c | 2 +- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +- drivers/net/mdio/mdio-xgene.c | 2 +- drivers/net/usb/r8152.c | 2 +- drivers/nfc/trf7970a.c | 2 +- drivers/phy/phy-core.c | 2 +- drivers/pinctrl/core.c | 2 +- drivers/pmdomain/rockchip/pm-domains.c | 2 +- drivers/reset/core.c | 2 +- drivers/s390/char/tape_class.c | 2 +- drivers/target/target_core_fabric_configfs.c | 6 +- drivers/thermal/ti-soc-thermal/ti-thermal-common.c | 2 +- drivers/vfio/vfio_main.c | 2 +- fs/9p/fid.h | 2 +- fs/btrfs/inode.c | 2 +- fs/btrfs/transaction.c | 2 +- fs/btrfs/tree-log.c | 2 +- fs/btrfs/uuid-tree.c | 2 +- fs/ceph/dir.c | 2 +- fs/ceph/snap.c | 2 +- fs/erofs/zdata.c | 2 +- fs/ext4/fast_commit.c | 2 +- fs/ext4/mballoc.c | 2 +- fs/ext4/namei.c | 2 +- fs/ext4/symlink.c | 2 +- fs/fuse/dir.c | 2 +- fs/gfs2/glock.c | 2 +- fs/ntfs3/fsntfs.c | 8 +- fs/pstore/zone.c | 2 +- fs/quota/quota.c | 2 +- fs/seq_file.c | 4 +- fs/smb/client/cifsglob.h | 2 +- fs/smb/client/connect.c | 2 +- fs/smb/client/readdir.c | 2 +- fs/squashfs/cache.c | 2 +- include/linux/file.h | 2 +- include/net/9p/client.h | 2 +- kernel/module/main.c | 2 +- kernel/sched/ext.c | 2 +- kernel/trace/fprobe.c | 2 +- kernel/trace/kprobe_event_gen_test.c | 2 +- kernel/trace/trace_events_hist.c | 2 +- lib/debugobjects.c | 2 +- lib/test_firmware.c | 2 +- lib/test_kmod.c | 4 +- mm/kmemleak.c | 16 +-- net/9p/trans_rdma.c | 8 +- net/bluetooth/mgmt.c | 6 +- net/core/xdp.c | 2 +- net/ipv6/ila/ila_xlat.c | 2 +- net/ipv6/ndisc.c | 2 +- net/netlink/af_netlink.c | 2 +- net/sched/cls_api.c | 6 +- net/sctp/socket.c | 2 +- net/sunrpc/xprtrdma/svc_rdma_transport.c | 12 +- net/tipc/socket.c | 2 +- net/wireless/reg.c | 2 +- scripts/coccinelle/api/is_err_or_null.cocci | 125 +++++++++++++++++++++ security/apparmor/apparmorfs.c | 2 +- sound/soc/samsung/i2s.c | 4 +- sound/soc/xtensa/xtfpga-i2s.c | 2 +- virt/kvm/eventfd.c | 4 +- 91 files changed, 251 insertions(+), 127 deletions(-) --- base-commit: 1f318b96cc84d7c2ab792fcc0bfd42a7ca890681 change-id: 20260305-b4-is_err_or_null-59998a7d03c4 Best regards, -- Philipp Hahn