This is version 4 of the cleanup work. The previous version can be found here: https://lore.kernel.org/all/20250317092919.008573387@xxxxxxxxxxxxx While converting the MSI descriptor locking to a lock guard() I stumbled over various abuse of MSI descriptors (again). The following series cleans up the offending code and converts the MSI descriptor locking over to lock guards. Changes vs. V3: - Cast retain_ptr() to void so it can't be used instead of return_ptr() - James - Split up the PCI/MSI changes - Move setting of pci_dev::msi_enabled to the success path - Fix a logic inversion in the UFS change and use a cleanup function to simplify the error path - James - Collect Reviewed/Tested/Acked-by tags where appropriate The series applies on: git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/msi and is available from git: git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git irq/msi Thanks, tglx --- drivers/ntb/msi.c | 22 +--- drivers/pci/controller/pci-hyperv.c | 14 -- drivers/pci/msi/api.c | 6 - drivers/pci/msi/msi.c | 175 ++++++++++++++++++++++-------------- drivers/pci/pci.h | 9 + drivers/pci/tph.c | 44 --------- drivers/soc/ti/ti_sci_inta_msi.c | 10 -- drivers/ufs/host/ufs-qcom.c | 85 +++++++++-------- include/linux/cleanup.h | 16 +++ include/linux/irqdomain.h | 2 include/linux/msi.h | 7 + kernel/irq/msi.c | 125 ++++++++++--------------- 12 files changed, 258 insertions(+), 257 deletions(-)