From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from out-170.mta0.migadu.com (out-170.mta0.migadu.com [91.218.175.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 91428376494 for ; Mon, 23 Feb 2026 22:01:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.170 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771884078; cv=none; b=tNUo+qkgvujDWCNniB5R6gheTPh8bu5VP2PtldM5coJn3laYeBzE2A2jLPVMGpB+zUUuuMaA/FBAwfn0IcZLqX+P3cYQditz+55lEXaOo4sQCkUeXSn/6pxKOoDSf+wPBYoal0zq9JfW1hlhb1k6lgBbDnEJyn/UbJa72PuHen4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771884078; c=relaxed/simple; bh=du1xv7WbQhEk2ylk+cgbRtUpQYYxt/QGk8xCqvdO33Q=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=c8auODRnMUhqNtTILOXMd001O+c6Ah7KBCg/wmGopaR3v3FUyvqKdQkPcNb0yPs7be3KYwIMIVSBv7YxvP92KCraXxZC1c2R6mDb3VFPv1PUVCsjapRT4ZcmsM4IXkIb81q1qxgEU0ht8gbaS30i8v+9Trko16lu0O3TlV22ElY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=EWL+tmVf; arc=none smtp.client-ip=91.218.175.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="EWL+tmVf" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1771884072; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=n0UylotFXhKAh+tR5TIDxBGnYugiB32afbl7cjK0Lxw=; b=EWL+tmVfAEBSlmS79TbjbYXsy1BaU0B/A8I+0j/COeL56k47NFi1aURdvKLRTqk1078alG JcCElPuuqZthQuAXxSrou2n9TLmzwhF2KaFR6D087xefD1HXrxlN/cHjVMtefjbO/xrZ4/ Z3N7KG5waNOlrgXVJI+xROMPt3DXo04= From: Bart Van Assche To: Peter Zijlstra Cc: Ingo Molnar , Will Deacon , Boqun Feng , Waiman Long , linux-kernel@vger.kernel.org, Marco Elver , Christoph Hellwig , Steven Rostedt , Nick Desaulniers , Nathan Chancellor , Kees Cook , Jann Horn , Bart Van Assche Subject: [PATCH 00/62] Bug fixes and refactoring patches related to locking Date: Mon, 23 Feb 2026 14:00:00 -0800 Message-ID: <20260223220102.2158611-1-bart.vanassche@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT From: Bart Van Assche Hi Peter, Annotating all source files in the kernel tree with lock context annotations led to the discovery of a significant number of locking bugs. This patch series includes fixes for the discovered bugs. Additionally, multiple refactoring patches have been included that make it easier for the compiler to verify correctness of locking operations. Please consider this patch series for the next merge window. While the previous version of this patch series only covered mutexes, this patch series covers all synchronization operations currently annotated with lock context annotations. The previous version is available here: [PATCH RFC 00/33] Compile-time thread-safety checking, LKML, February 2025 (https://lore.kernel.org/lkml/20250206175114.1974171-1-bvanassche@acm.org/). Thanks, Bart. Bart Van Assche (62): kvm: Make pi_enable_wakeup_handler() easier to analyze blk-ioc: Prepare for enabling thread-safety analysis drbd: Balance RCU calls in drbd_adm_dump_devices() dax/bus.c: Fix a locking bug dma-buf: Convert dma_buf_import_sync_file() to the early-return style dma-buf: Handle all dma_resv_lock() errors drm/amdgpu: Unlock a mutex before destroying it drm/amdgpu: Fix locking bugs in error paths drm: bridge: cdns-mhdp8546: Fix a locking bug in an error path drm: Make drm_read() easier to analyze drm/pagemap: Unlock cache->lock before freeing it drm/gpusvm.c: Fix a locking bug in an error path drm/qxl: Fix a buffer leak in an error path hwmon: (it87) Check the it87_lock() return value Input: synaptics-rmi4 - fix a locking bug in an error path md: Make mddev_suspend() easier to analyze bnxt_en: Make bnxt_resume() easier to analyze bnxt_en: Fix bnxt_dl_reload_up() ice: Fix a locking bug in an error path octeontx2-pf: Fix locking in an error path qed: Make _qed_mcp_cmd_and_union() easier to analyze mctp i3c: Fix locking in error paths net: phy: mxl-86110: Fix locking in an error path net/cw1200: Fix locking in error paths wlcore: Fix a locking bug misc: nsm: Fix a locking bug in an error path pci: Fix locking in pci_do_resource_release_and_resize() error paths PNP: isapnp: Check the isapnp_cfg_begin() return value fnic: Make fnic_queuecommand() easier to analyze megaraid: Protect more code with instance->reset_mutex target: Make transport_handle_queue_full() easier to analyze usbip: Move a check outside put_busid_priv() fbdev/omap2: Make the source code easier to analyze btrfs: Fix a bug in try_release_subpage_extent_buffer() cachefiles: Fix a locking bug in an error path f2fs: Fix handling of radix_tree_preload() failures lib: Split codetag_lock_module_list() treewide: Modify mutex_lock_interruptible() return value checks accel/ivpu: Check the ivpu_bo_lock() return value dma-buf: Check the dma_resv_lock() return value drm: Check the dma_resv_lock() return value drm/amdgpu: Check the dma_resv_lock() return value drm/gma500: Check the dma_resv_lock() return value drm/i915: Check the dma_resv_lock() return value drm/imagination: Check the dma_resv_lock() return value drm/lima: Check the dma_resv_lock() return value drm/loongson: Check the dma_resv_lock() return value drm/msm: Check the dma_resv_lock() return value drm/nouveau: Check the dma_resv_lock() return value drm/panfrost: Check the dma_resv_lock() return value drm/panthor: Check the dma_resv_lock() return value drm/radeon: Check the dma_resv_lock() return value drm/ttm: Check the dma_resv_lock() return value drm/vgem: Check the dma_resv_lock() return value drm/virtio: Check the dma_resv_lock() return value drm/vmwgfx: Check the dma_resv_lock() return value drm/xe: Check the dma_resv_lock() return value RDMA/core: Check the dma_resv_lock() return value RDMA/mlx5: Check the dma_resv_lock() return value iommufd: Check the dma_resv_lock() return value vfio/pci: Check the dma_resv_lock() return value dma-resv: Make checking the dma_resv_lock() return value mandatory arch/x86/kvm/vmx/posted_intr.c | 7 +- block/blk-ioc.c | 2 +- drivers/accel/ivpu/ivpu_gem.c | 41 ++++++++---- drivers/block/drbd/drbd_nl.c | 8 ++- drivers/dax/bus.c | 3 +- drivers/dma-buf/dma-buf.c | 66 +++++++++++++------ drivers/dma-buf/dma-resv.c | 6 +- drivers/gpib/lpvo_usb_gpib/lpvo_usb_gpib.c | 4 +- drivers/gpio/gpio-mlxbf2.c | 4 +- drivers/gpu/drm/amd/amdgpu/amdgpu_aca.c | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 4 +- drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c | 12 ++-- .../drm/bridge/cadence/cdns-mhdp8546-core.c | 3 +- drivers/gpu/drm/drm_file.c | 5 +- drivers/gpu/drm/drm_gem.c | 17 +++-- drivers/gpu/drm/drm_gem_shmem_helper.c | 42 ++++++++---- drivers/gpu/drm/drm_gpusvm.c | 5 +- drivers/gpu/drm/drm_gpuvm.c | 4 +- drivers/gpu/drm/drm_mode_config.c | 7 +- drivers/gpu/drm/drm_pagemap_util.c | 2 + drivers/gpu/drm/drm_prime.c | 4 +- drivers/gpu/drm/gma500/gem.c | 10 ++- drivers/gpu/drm/i915/i915_vma.h | 4 +- drivers/gpu/drm/imagination/pvr_gem.c | 9 ++- drivers/gpu/drm/imagination/pvr_job.c | 4 +- drivers/gpu/drm/imagination/pvr_vm.c | 4 +- drivers/gpu/drm/lima/lima_gem.c | 4 +- drivers/gpu/drm/loongson/lsdc_gem.c | 6 +- drivers/gpu/drm/msm/msm_gem.h | 4 +- drivers/gpu/drm/nouveau/nouveau_gem.c | 14 ++-- drivers/gpu/drm/nouveau/nouveau_prime.c | 4 +- drivers/gpu/drm/nouveau/nouveau_uvmm.c | 15 +++-- drivers/gpu/drm/panfrost/panfrost_gem.c | 10 ++- drivers/gpu/drm/panfrost/panfrost_mmu.c | 4 +- drivers/gpu/drm/panthor/panthor_gem.c | 10 ++- drivers/gpu/drm/panthor/panthor_mmu.c | 7 +- drivers/gpu/drm/qxl/qxl_ioctl.c | 2 +- drivers/gpu/drm/radeon/radeon_prime.c | 4 +- drivers/gpu/drm/ttm/tests/ttm_bo_test.c | 39 +++++++---- .../gpu/drm/ttm/tests/ttm_bo_validate_test.c | 7 +- drivers/gpu/drm/ttm/tests/ttm_resource_test.c | 4 +- drivers/gpu/drm/ttm/tests/ttm_tt_test.c | 15 +++-- drivers/gpu/drm/ttm/ttm_bo.c | 9 ++- drivers/gpu/drm/vgem/vgem_fence.c | 4 +- drivers/gpu/drm/virtio/virtgpu_plane.c | 11 ++-- drivers/gpu/drm/virtio/virtgpu_prime.c | 18 ++--- drivers/gpu/drm/vmwgfx/vmwgfx_gem.c | 4 +- drivers/gpu/drm/xe/xe_bo.c | 4 +- drivers/gpu/drm/xe/xe_ggtt.c | 2 +- drivers/gpu/drm/xe/xe_pm.c | 4 +- drivers/hwmon/gigabyte_waterforce.c | 2 +- drivers/hwmon/it87.c | 4 +- drivers/hwmon/nzxt-kraken3.c | 2 +- drivers/infiniband/core/ib_core_uverbs.c | 5 +- drivers/infiniband/core/umem_dmabuf.c | 10 ++- .../infiniband/core/uverbs_std_types_dmabuf.c | 6 +- drivers/infiniband/hw/mlx5/mr.c | 21 ++++-- drivers/infiniband/hw/mlx5/odp.c | 4 +- drivers/infiniband/ulp/srp/ib_srp.c | 2 +- drivers/infiniband/ulp/srpt/ib_srpt.c | 4 +- drivers/input/rmi4/rmi_f54.c | 5 +- drivers/iommu/iommufd/pages.c | 10 ++- drivers/iommu/iommufd/selftest.c | 4 +- drivers/leds/leds-blinkm.c | 2 +- drivers/md/md.c | 9 +-- drivers/media/dvb-frontends/bcm3510.c | 2 +- drivers/media/dvb-frontends/dib0070.c | 4 +- drivers/media/dvb-frontends/dib0090.c | 8 +-- drivers/media/dvb-frontends/dib7000m.c | 4 +- drivers/media/dvb-frontends/dib7000p.c | 4 +- drivers/media/dvb-frontends/dib8000.c | 10 +-- drivers/media/dvb-frontends/dib9000.c | 42 ++++++------ drivers/media/dvb-frontends/dibx000_common.c | 10 +-- drivers/media/usb/dvb-usb-v2/af9035.c | 2 +- drivers/media/usb/dvb-usb-v2/anysee.c | 2 +- drivers/media/usb/dvb-usb-v2/au6610.c | 2 +- drivers/media/usb/dvb-usb-v2/az6007.c | 6 +- drivers/media/usb/dvb-usb-v2/ce6230.c | 2 +- drivers/media/usb/dvb-usb-v2/dvbsky.c | 2 +- drivers/media/usb/dvb-usb-v2/ec168.c | 2 +- drivers/media/usb/dvb-usb-v2/lmedm04.c | 2 +- drivers/media/usb/dvb-usb-v2/mxl111sf-i2c.c | 2 +- drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 2 +- drivers/media/usb/dvb-usb/af9005.c | 2 +- drivers/media/usb/dvb-usb/az6027.c | 2 +- drivers/media/usb/dvb-usb/cxusb.c | 2 +- drivers/media/usb/dvb-usb/dib0700_core.c | 20 +++--- drivers/media/usb/dvb-usb/dibusb-common.c | 2 +- drivers/media/usb/dvb-usb/digitv.c | 2 +- drivers/media/usb/dvb-usb/dtv5100.c | 2 +- drivers/media/usb/dvb-usb/dvb-usb-urb.c | 3 +- drivers/media/usb/dvb-usb/dw2102.c | 16 ++--- drivers/media/usb/dvb-usb/gp8psk.c | 6 +- drivers/media/usb/dvb-usb/m920x.c | 2 +- drivers/media/usb/dvb-usb/opera1.c | 4 +- drivers/media/usb/dvb-usb/pctv452e.c | 4 +- drivers/media/usb/dvb-usb/technisat-usb2.c | 10 +-- drivers/media/usb/dvb-usb/ttusb2.c | 2 +- drivers/media/usb/dvb-usb/vp702x.c | 5 +- .../media/usb/ttusb-budget/dvb-ttusb-budget.c | 4 +- drivers/media/usb/uvc/uvc_ctrl.c | 6 +- drivers/misc/nsm.c | 2 +- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 +- .../net/ethernet/broadcom/bnxt/bnxt_devlink.c | 2 + drivers/net/ethernet/intel/ice/ice_dcb_lib.c | 4 +- .../ethernet/marvell/octeontx2/nic/otx2_pf.c | 2 +- drivers/net/ethernet/mellanox/mlxsw/i2c.c | 4 +- drivers/net/ethernet/qlogic/qed/qed_mcp.c | 56 ++++++++-------- drivers/net/mctp/mctp-i3c.c | 5 +- drivers/net/phy/mxl-86110.c | 2 +- drivers/net/usb/cdc_subset.c | 2 +- drivers/net/wireless/intersil/p54/p54usb.c | 2 +- drivers/net/wireless/st/cw1200/pm.c | 2 + drivers/net/wireless/ti/wlcore/main.c | 4 +- drivers/net/wireless/ti/wlcore/sysfs.c | 2 +- drivers/pci/setup-bus.c | 2 +- drivers/platform/x86/lenovo/thinkpad_acpi.c | 12 ++-- drivers/pnp/isapnp/core.c | 16 +++-- drivers/scsi/fnic/fnic_scsi.c | 9 +-- drivers/scsi/hpsa.c | 2 +- drivers/scsi/megaraid/megaraid_sas_base.c | 15 +++-- drivers/target/target_core_transport.c | 2 +- drivers/tty/tty_io.c | 6 +- drivers/usb/class/cdc-wdm.c | 3 +- drivers/usb/class/usblp.c | 2 +- drivers/usb/class/usbtmc.c | 2 +- drivers/usb/core/message.c | 2 +- drivers/usb/core/sysfs.c | 24 +++---- drivers/usb/gadget/legacy/inode.c | 13 ++-- drivers/usb/misc/yurex.c | 2 +- drivers/usb/storage/transport.c | 2 +- drivers/usb/usb-skeleton.c | 2 +- drivers/usb/usbip/stub_dev.c | 21 ++++-- drivers/usb/usbip/stub_main.c | 3 +- drivers/usb/usbip/stub_rx.c | 2 +- drivers/vfio/pci/vfio_pci_dmabuf.c | 25 ++++--- .../video/fbdev/omap2/omapfb/omapfb-ioctl.c | 4 +- .../video/fbdev/omap2/omapfb/omapfb-main.c | 4 +- .../video/fbdev/omap2/omapfb/omapfb-sysfs.c | 4 +- drivers/video/fbdev/omap2/omapfb/omapfb.h | 4 +- drivers/w1/masters/omap_hdq.c | 8 +-- fs/afs/validation.c | 2 +- fs/afs/vl_alias.c | 6 +- fs/btrfs/extent_io.c | 1 + fs/cachefiles/namei.c | 1 - fs/f2fs/checkpoint.c | 8 ++- fs/f2fs/node.c | 8 ++- fs/fsopen.c | 2 +- fs/orangefs/devorangefs-req.c | 2 +- fs/proc/base.c | 2 +- include/linux/codetag.h | 3 +- include/linux/dma-resv.h | 4 +- kernel/seccomp.c | 10 +-- lib/alloc_tag.c | 8 +-- lib/codetag.c | 12 ++-- mm/kmemleak.c | 4 +- net/rxrpc/recvmsg.c | 2 +- net/rxrpc/sendmsg.c | 2 +- security/integrity/ima/ima_fs.c | 2 +- sound/pci/oxygen/oxygen_lib.c | 2 +- 160 files changed, 695 insertions(+), 443 deletions(-)