linux/drivers/i2c/busses
Rahul Pon ae83640855
i2c: qcom-geni: release runtime PM reference when set_rate fails
geni_i2c_xfer() takes a runtime-PM reference with pm_runtime_get_sync()
and then returns directly if the set_rate() callback fails, leaking the
reference and keeping the controller resumed for good. Route that error
through the existing cleanup path, which drops the reference and resets
the transfer state.

Found by code review; compile-tested with arm64 defconfig plus ACPI and
W=1.

Fixes: 10e74f4c50 ("i2c: qcom-geni: Enable I2C on SA8255p Qualcomm platforms")
Assisted-by: LLM
Signed-off-by: Rahul Pon <theflyingrahul@gmail.com>
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
Link: https://patch.msgid.link/20260930111641.1134-1-theflyingrahul@gmail.com
History 2026-10-05 12:10:52 +02:00
..
i2c-acorn.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
i2c-ali15x3.c i2c: ali15x3: Fix an error handling path in ali15x3_probe() 2025-03-12 12:24:52 +01:00
i2c-ali1535.c i2c: ali1535: Fix an error handling path in ali1535_probe() 2025-03-12 12:24:52 +01:00
i2c-ali1563.c i2c: add missing MODULE_DESCRIPTION() macros 2024-07-09 00:46:06 +02:00
i2c-altera.c i2c: Switch back to struct platform_driver::remove() 2024-11-17 11:58:14 +01:00
i2c-amd-asf-plat.c i2c: busses: drop redundant dev_err_probe() around irq helpers 2026-08-19 21:55:51 +02:00
i2c-amd-mp2-pci.c i2c: amd-mp2: clean up amd_mp2_find_device() 2026-01-16 13:45:05 +01:00
i2c-amd-mp2-plat.c i2c: amd-mp2: Unregister callback on adapter add failure 2026-07-27 22:52:34 +02:00
i2c-amd-mp2.h i2c: Remove redundant pm_runtime_mark_last_busy() calls 2025-10-14 13:51:07 +02:00
i2c-amd756.c i2c: amd756: Remove superfluous TODO 2025-01-14 11:09:47 +01:00
i2c-amd8111.c i2c: amd8111: switch to devm_ functions 2026-02-07 01:20:04 +01:00
i2c-aspeed.c i2c: use inclusive callbacks in struct i2c_algorithm 2025-06-12 10:05:31 +02:00
i2c-at91-core.c i2c: at91: release DMA channels on remove and probe error 2026-09-20 09:40:28 +02:00
i2c-at91-master.c i2c: at91: release DMA channels when probe defers 2026-10-01 13:51:54 +02:00
i2c-at91-slave.c i2c: at91: Fix the functionality flags of the slave-only interface 2024-06-12 17:07:33 +01:00
i2c-at91.h i2c: at91: release DMA channels on remove and probe error 2026-09-20 09:40:28 +02:00
i2c-au1550.c i2c: Switch back to struct platform_driver::remove() 2024-11-17 11:58:14 +01:00
i2c-axxia.c i2c: use inclusive callbacks in struct i2c_algorithm 2025-06-12 10:05:31 +02:00
i2c-bcm-iproc.c i2c: busses: drop redundant dev_err_probe() around irq helpers 2026-08-19 21:55:51 +02:00
i2c-bcm-kona.c i2c: bcm-kona: fix spelling mistake in timeout-check comment 2026-06-09 08:40:21 +02:00
i2c-bcm2835.c i2c: busses: bcm2835: convert from round_rate() to determine_rate() 2025-10-27 14:17:14 +01:00
i2c-brcmstb.c i2c: brcmstb: Use i2c_10bit_addr_*_from_msg() helpers 2025-03-18 21:53:54 +01:00
i2c-cadence.c i2c: cadence: Add shutdown handler 2026-06-09 08:30:47 +02:00
i2c-cbus-gpio.c i2c: Switch back to struct platform_driver::remove() 2024-11-17 11:58:14 +01:00
i2c-ccgx-ucsi.c i2c: add missing MODULE_DESCRIPTION() macros 2024-07-09 00:46:06 +02:00
i2c-ccgx-ucsi.h i2c: Introduce common module to instantiate CCGx UCSI 2022-02-15 10:04:53 +01:00
i2c-cgbc.c i2c: use inclusive callbacks in struct i2c_algorithm 2025-06-12 10:05:31 +02:00
i2c-cht-wc.c i2c: Switch to irq_domain_create_linear() 2025-05-16 21:06:09 +02:00
i2c-cp2615.c i2c-for-7.1-rc1-part1 2026-04-18 09:44:22 -07:00
i2c-cpm.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
i2c-cros-ec-tunnel.c i2c: cros-ec-tunnel: defer probe if parent EC is not present 2025-04-13 21:33:44 +02:00
i2c-davinci.c i2c: davinci: Use generic definitions for bus frequencies 2026-07-01 10:50:29 +02:00
i2c-designware-amdisp.c i2c: designware: amdisp: Fix resume-probe race condition issue 2026-03-27 13:51:21 +01:00
i2c-designware-amdpsp.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
i2c-designware-baytrail.c i2c: designware: Add AMD PSP I2C bus support 2022-02-11 15:38:23 +01:00
i2c-designware-common.c i2c: designware: Global register definitions 2026-08-27 12:00:16 -04:00
i2c-designware-core.h i2c: designware: Global register definitions 2026-08-27 12:00:16 -04:00
i2c-designware-master.c i2c: designware: Global register definitions 2026-08-27 12:00:16 -04:00
i2c-designware-pcidrv.c i2c: designware-pcidrv: Consistently define pci_device_ids using named initializers 2026-06-09 08:44:21 +02:00
i2c-designware-platdrv.c i2c: designware: Enable interrupt mask workaround for HJMC3001 2026-08-28 02:38:00 +02:00
i2c-designware-slave.c i2c: designware: Global register definitions 2026-08-27 12:00:16 -04:00
i2c-digicolor.c i2c: Switch back to struct platform_driver::remove() 2024-11-17 11:58:14 +01:00
i2c-diolan-u2c.c i2c: diolan-u2c: drop redundant device reference 2026-03-09 12:58:56 +01:00
i2c-dln2.c i2c: Switch back to struct platform_driver::remove() 2024-11-17 11:58:14 +01:00
i2c-eg20t.c i2c: eg20t: Consistently define pci_device_ids using named initializers 2026-06-09 08:44:26 +02:00
i2c-elektor.c i2c: Don't let i2c adapters declare I2C_CLASS_SPD support if they support I2C_CLASS_HWMON 2024-01-18 21:10:41 +01:00
i2c-emev2.c i2c: use inclusive callbacks in struct i2c_algorithm 2025-06-12 10:05:31 +02:00
i2c-exynos5.c i2c: use inclusive callbacks in struct i2c_algorithm 2025-06-12 10:05:31 +02:00
i2c-fsi.c i2c: fsi: Fix a potential leak in fsi_i2c_probe() 2026-03-19 23:45:06 +01:00
i2c-gpio.c treewide: refresh kmalloc_obj() conversions 2026-09-04 21:37:00 -07:00
i2c-gxp.c i2c: busses: drop redundant dev_err_probe() around irq helpers 2026-08-19 21:55:51 +02:00
i2c-highlander.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
i2c-hisi.c i2c: busses: drop redundant dev_err_probe() around irq helpers 2026-08-19 21:55:51 +02:00
i2c-hix5hd2.c i2c: Remove redundant pm_runtime_mark_last_busy() calls 2025-10-14 13:51:07 +02:00
i2c-hydra.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
i2c-i801.c i2c: i801: fix hardware state machine corruption in error path 2026-06-23 17:53:08 +02:00
i2c-ibm_iic.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
i2c-ibm_iic.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
i2c-icy.c i2c: icy: Use named initializer for zorro_device_id arrays 2026-05-29 00:19:03 +02:00
i2c-img-scb.c i2c: Remove redundant pm_runtime_mark_last_busy() calls 2025-10-14 13:51:07 +02:00
i2c-imx-lpi2c.c i2c: imx-lpi2c: avoid accessing target registers on master-only controllers 2026-08-28 03:00:32 +02:00
i2c-imx.c i2c: imx: release DMA channels on probe error 2026-09-20 09:40:28 +02:00
i2c-iop3xx.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
i2c-iop3xx.h Merge branch 'i2c/for-5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2019-07-15 21:10:39 -07:00
i2c-isch.c i2c: isch: Convert comma to semicolon 2025-01-07 23:46:10 +01:00
i2c-ismt.c i2c: ismt: Use non-hybrid PCI devres API 2025-05-19 22:23:57 +02:00
i2c-jz4780.c i2c: jz4780: Cache host clock rate at probe to prevent CCF prepare_lock deadlock 2026-07-27 22:56:08 +02:00
i2c-k1.c i2c: busses: drop redundant dev_err_probe() around irq helpers 2026-08-19 21:55:51 +02:00
i2c-keba.c i2c: use inclusive callbacks in struct i2c_algorithm 2025-06-12 10:05:31 +02:00
i2c-kempld.c i2c: kempld: Use i2c_10bit_addr_*_from_msg() helpers 2025-03-18 21:53:54 +01:00
i2c-ljca.c module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
i2c-lpc2k.c i2c: lpc2k: Add check for clk_enable() 2025-05-19 22:23:54 +02:00
i2c-ls2x-v2.c i2c: ls2x-v2: return IRQ_HANDLED after servicing an error 2026-06-17 01:19:53 +02:00
i2c-ls2x.c i2c: busses: drop redundant dev_err_probe() around irq helpers 2026-08-19 21:55:51 +02:00
i2c-mchp-pci1xxxx.c i2c: use inclusive callbacks in struct i2c_algorithm 2025-06-12 10:05:31 +02:00
i2c-meson.c i2c: use inclusive callbacks in struct i2c_algorithm 2025-06-12 10:05:31 +02:00
i2c-microchip-corei2c.c i2c: busses: drop redundant dev_err_probe() around irq helpers 2026-08-19 21:55:51 +02:00
i2c-mlxbf.c i2c: busses: drop redundant dev_err_probe() around irq helpers 2026-08-19 21:55:51 +02:00
i2c-mlxcpld.c i2c: Switch back to struct platform_driver::remove() 2024-11-17 11:58:14 +01:00
i2c-mpc.c i2c: mpc: Fix timeout calculations 2026-06-23 17:28:25 +02:00
i2c-mt65xx.c i2c: mediatek: fix WRRD for SoCs without auto_restart option 2026-07-15 00:21:51 +02:00
i2c-mt7621.c i2c: mt7621: Use i2c_10bit_addr_*_from_msg() helpers 2025-03-18 21:53:54 +01:00
i2c-mv64xxx.c i2c: Remove redundant pm_runtime_mark_last_busy() calls 2025-10-14 13:51:07 +02:00
i2c-mxs.c i2c: mxs: fix DMA channel leak on probe error 2026-08-19 21:55:53 +02:00
i2c-nct6694.c i2c: Add Nuvoton NCT6694 I2C support 2025-09-16 14:41:57 +01:00
i2c-nforce2.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
i2c-nomadik.c i2c: busses: drop redundant dev_err_probe() around irq helpers 2026-08-19 21:55:51 +02:00
i2c-npcm7xx.c i2c: npcm7xx: Use NULL instead of 0 for pointer 2026-03-20 00:12:10 +01:00
i2c-nvidia-gpu.c i2c: Remove redundant pm_runtime_mark_last_busy() calls 2025-10-14 13:51:07 +02:00
i2c-ocores.c i2c: ocores: Disable clock on failed resume 2026-08-19 21:55:52 +02:00
i2c-octeon-core.c i2c: octeon: add block-mode i2c operations 2025-05-19 22:23:55 +02:00
i2c-octeon-core.h i2c: octeon-core: Use generic definitions for bus frequencies 2026-07-01 10:50:30 +02:00
i2c-octeon-platdrv.c i2c: Switch back to struct platform_driver::remove() 2024-11-17 11:58:14 +01:00
i2c-omap.c i2c: omap: switch to new generic helper for getting selected mux-state 2026-03-09 13:44:45 +01:00
i2c-opal.c i2c: Switch back to struct platform_driver::remove() 2024-11-17 11:58:14 +01:00
i2c-owl.c i2c: owl: reword according to newest specification 2024-07-11 15:14:17 +02:00
i2c-parport.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
i2c-pasemi-core.c i2c: pasemi: Log bus reset causes 2025-05-19 22:23:57 +02:00
i2c-pasemi-core.h i2c: /pasemi: PASemi I2C controller IRQ enablement 2022-11-12 21:30:16 +01:00
i2c-pasemi-pci.c i2c: pasemi: Sort includes alphabetically 2025-05-19 22:23:55 +02:00
i2c-pasemi-platform.c i2c: Switch back to struct platform_driver::remove() 2024-11-17 11:58:14 +01:00
i2c-pca-isa.c i2c: rename wait_for_completion callback to wait_for_completion_cb 2025-10-04 18:52:58 +02:00
i2c-pca-platform.c i2c: rename wait_for_completion callback to wait_for_completion_cb 2025-10-04 18:52:58 +02:00
i2c-piix4.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
i2c-piix4.h i2c: piix4: Export i2c_piix4 driver functions as library 2024-11-13 23:29:46 +01:00
i2c-pnx.c i2c: pnx: Use generic definitions for bus frequencies 2026-07-01 10:50:28 +02:00
i2c-powermac.c i2c: powermac: convert of_node usage to fwnode 2025-05-20 22:49:21 +02:00
i2c-pxa-pci.c i2c: pxa-pci: use platform_device_set_of_node() 2026-07-10 16:07:09 +02:00
i2c-pxa.c i2c: pxa: Use named initializers for the platform_device_id array 2026-06-18 12:08:49 +02:00
i2c-qcom-cci.c i2c: qcom-cci: fix device_node refcount leak in cci_probe()/cci_remove() 2026-09-20 09:40:29 +02:00
i2c-qcom-geni.c i2c: qcom-geni: release runtime PM reference when set_rate fails 2026-10-05 12:10:52 +02:00
i2c-qup.c i2c: qup: Propagate clock enable failures 2026-07-28 23:39:07 +02:00
i2c-rcar.c i2c: rcar: fix reset handling for Gen5 2026-08-19 22:07:13 +02:00
i2c-riic.c i2c: busses: drop redundant dev_err_probe() around irq helpers 2026-08-19 21:55:51 +02:00
i2c-rk3x.c i2c: rk3x: Use HZ_PER_GHZ constant instead of plain number 2026-01-13 18:34:33 +01:00
i2c-robotfuzz-osif.c i2c: robotfuzz-osif: drop redundant device reference 2026-03-09 12:54:03 +01:00
i2c-rtl9300.c Replace <linux/mod_devicetable.h> by more specific <linux/device-id/*.h> (c files) 2026-07-03 07:38:17 +02:00
i2c-rzv2m.c i2c: busses: drop redundant dev_err_probe() around irq helpers 2026-08-19 21:55:51 +02:00
i2c-s3c2410.c i2c: s3c24xx: check the size of the SMBUS message before using it 2026-03-25 18:13:39 +01:00
i2c-scmi.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
i2c-sh7760.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
i2c-sh_mobile.c i2c: use inclusive callbacks in struct i2c_algorithm 2025-06-12 10:05:31 +02:00
i2c-sibyte.c i2c: Don't let i2c adapters declare I2C_CLASS_SPD support if they support I2C_CLASS_HWMON 2024-01-18 21:10:41 +01:00
i2c-simtec.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
i2c-sis96x.c i2c: sis96x: Replace dev_err() with dev_err_probe() in probe function 2026-05-29 00:05:06 +02:00
i2c-sis630.c i2c: sis630: Replace dev_err() with dev_err_probe() in probe function 2026-05-29 00:05:10 +02:00
i2c-sis5595.c i2c: sis5595: reword according to newest specification 2024-07-11 15:14:20 +02:00
i2c-sprd.c i2c: busses: drop redundant dev_err_probe() around irq helpers 2026-08-19 21:55:51 +02:00
i2c-st.c i2c: busses: drop redundant dev_err_probe() around irq helpers 2026-08-19 21:55:51 +02:00
i2c-stm32.c i2c: stm32: Replace dev_err() with dev_err_probe() in probe function 2026-05-29 00:04:57 +02:00
i2c-stm32.h i2c: stm32: Use the correct style for SPDX License Identifier 2019-08-14 14:56:54 +02:00
i2c-stm32f4.c i2c: busses: drop redundant dev_err_probe() around irq helpers 2026-08-19 21:55:51 +02:00
i2c-stm32f7.c i2c: busses: drop redundant dev_err_probe() around irq helpers 2026-08-19 21:55:51 +02:00
i2c-sun6i-p2wi.c i2c: busses: drop redundant dev_err_probe() around irq helpers 2026-08-19 21:55:51 +02:00
i2c-synquacer.c i2c: busses: drop redundant dev_err_probe() around irq helpers 2026-08-19 21:55:51 +02:00
i2c-taos-evm.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
i2c-tegra-bpmp.c i2c: Switch back to struct platform_driver::remove() 2024-11-17 11:58:14 +01:00
i2c-tegra.c i2c for v7.2 2026-06-16 07:43:29 +05:30
i2c-thunderx-pcidrv.c i2c: thunderx: Use non-hybrid PCI devres API 2025-05-19 22:23:57 +02:00
i2c-tiny-usb.c i2c: tiny-usb: Replace dev_err() with dev_err_probe() in probe function 2026-05-28 23:26:43 +02:00
i2c-uniphier-f.c i2c: busses: drop redundant dev_err_probe() around irq helpers 2026-08-19 21:55:51 +02:00
i2c-uniphier.c i2c: busses: drop redundant dev_err_probe() around irq helpers 2026-08-19 21:55:51 +02:00
i2c-usbio.c i2c: usbio: Add ACPI device-id for NVL platforms 2026-04-10 23:08:42 +02:00
i2c-versatile.c i2c: Switch back to struct platform_driver::remove() 2024-11-17 11:58:14 +01:00
i2c-via.c i2c: via: Replace dev_err() with dev_err_probe() in probe function 2025-05-19 22:23:55 +02:00
i2c-viai2c-common.c i2c: viai2c: reword according to newest specification 2024-07-11 15:14:24 +02:00
i2c-viai2c-common.h i2c: viai2c: turn common code into a proper module 2024-06-26 16:07:21 +02:00
i2c-viai2c-wmt.c i2c: busses: drop redundant dev_err_probe() around irq helpers 2026-08-19 21:55:51 +02:00
i2c-viai2c-zhaoxin.c i2c: busses: drop redundant dev_err_probe() around irq helpers 2026-08-19 21:55:51 +02:00
i2c-viapro.c i2c: viapro: Replace dev_err() with dev_err_probe() in probe function 2025-05-19 22:23:55 +02:00
i2c-viperboard.c i2c: busses: Fix some spelling errors 2025-09-25 23:49:08 +02:00
i2c-virtio.c i2c: virtio: mark device ready before registering the adapter 2026-05-30 15:56:07 +02:00
i2c-xgene-slimpro.c i2c: xgene-slimpro: Replace dev_err() with dev_err_probe() in probe function 2025-05-23 10:02:27 +02:00
i2c-xiic.c i2c: xiic: don't clobber msg->len to signal block-read completion 2026-09-28 01:28:42 +02:00
i2c-xlp9xx.c i2c: busses: drop redundant dev_err_probe() around irq helpers 2026-08-19 21:55:51 +02:00
Kconfig i2c: spacemit: configure ILCR/IWCR for accurate SCL frequency 2026-07-01 10:50:18 +02:00
Makefile i2c: ls2x-v2: Add driver for Loongson-2K0300 I2C controller 2026-04-27 12:35:35 +02:00
scx200_acb.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00