linux/drivers/usb/chipidea
Myeonghun Pak f1d6f7d25f usb: chipidea: tegra: disable runtime PM on resume failure
tegra_usb_probe() enables runtime PM before resuming the device. If
pm_runtime_resume_and_get() fails, probe returns without disabling runtime
PM. The later error paths reach pm_runtime_force_suspend(), but this early
return bypasses that cleanup.

Disable runtime PM before returning the resume error. Do not use the
fail_power_off path: the failed resume did not retain a usage reference,
so its pm_runtime_put_sync_suspend() would be unbalanced.

This issue was identified during our ongoing static-analysis research while
reviewing kernel code.

Fixes: 8b85e11c1a ("usb: chipidea: tegra: Add runtime PM and OPP support")
Cc: stable <stable@kernel.org>
Assisted-by: OpenAI:GPT-5.6
Co-developed-by: Ijae Kim <ae878000@gmail.com>
Signed-off-by: Ijae Kim <ae878000@gmail.com>
Signed-off-by: Myeonghun Pak <mhun512@gmail.com>
Acked-by: Peter Chen <peter.chen@kernel.org>
Link: https://patch.msgid.link/20260913041033.25144-1-mhun512@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2026-09-16 19:18:27 +01:00
..
bits.h USB: chipidea: Use the correct style for SPDX License Identifier 2020-03-16 11:13:47 +08:00
ci.h usb: chipidea: udc: limit usb request length to max 16KB 2024-10-04 15:13:58 +02:00
ci_hdrc_imx.c usb: chipidea: imx: fix missing ret assignment for dev_err_probe 2026-07-10 15:57:32 +02:00
ci_hdrc_imx.h usb: chipidea: imx: add imx_usbmisc_pullup() hook 2025-06-19 12:28:25 +02:00
ci_hdrc_msm.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ci_hdrc_npcm.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ci_hdrc_pci.c usb: chipidea: ci_hdrc_pci: Fix improper use of kerneldoc format 2020-07-09 17:19:56 +02:00
ci_hdrc_tegra.c usb: chipidea: tegra: disable runtime PM on resume failure 2026-09-16 19:18:27 +01:00
ci_hdrc_usb2.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
core.c Linux 7.2-rc7 2026-08-10 01:20:05 +02:00
debug.c usb: chipidea: debug: remove redundant 'role' debug file 2023-03-23 17:27:46 +01:00
host.c USB: Use str_enable_disable-like helpers 2025-01-15 18:28:13 +01:00
host.h usb: chipidea: add inline for ci_hdrc_host_driver_init if host is not defined 2020-01-22 07:54:27 +01:00
Kconfig usb: chipidea: Add support for NPCM 2023-10-21 12:46:00 +02:00
Makefile usb: chipidea: Add support for NPCM 2023-10-21 12:46:00 +02:00
otg.c usb: chipidea: otg: not wait vbus drop if use role_switch 2026-04-07 13:46:54 +02:00
otg.h usb: chipidea: core: add controller resume support when controller is powered off 2022-10-23 14:34:53 +02:00
otg_fsm.c usb: Remove redundant pm_runtime_mark_last_busy() calls 2025-11-21 15:11:53 +01:00
otg_fsm.h USB: chipidea: Use the correct style for SPDX License Identifier 2020-03-16 11:13:47 +08:00
trace.c usb: chipidea: add tracepoint support for udc 2020-12-10 08:45:26 +08:00
trace.h tracing/treewide: Remove second parameter of __assign_str() 2024-05-22 20:14:47 -04:00
udc.c usb: chipidea: udc: support dynamic gadget add/remove 2026-05-22 11:28:10 +02:00
udc.h usb: chipidea: udc: create bounce buffer for problem sglist entries if possible 2024-10-04 15:13:58 +02:00
ulpi.c Revert "usb: chipidea: move ci_ulpi_init after the phy initialization" 2024-06-04 14:51:09 +02:00
usbmisc_imx.c usb: chipidea: imx: add USB support for i.MX94 2025-10-13 09:11:50 +02:00