CVE-2025-38136: usb: renesas_usbhs: Reorder clock handling and power management in probe

Published Jul 3, 2025
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

usb: renesasusbhs: Reorder clock handling and power management in probe

Reorder the initialization sequence in usbhsprobe() to enable runtime PM before accessing registers, preventing potential crashes due to uninitialized clocks.

Currently, in the probe path, registers are accessed before enabling the clocks, leading to a synchronous external abort on the RZ/V2H SoC. The problematic call flow is as follows:

usbhsprobe() usbhssysclockctrl() usbhsbset() usbhswrite() iowrite16() <-- Register access before enabling clocks

Since iowrite16() is performed without ensuring the required clocks are enabled, this can lead to access errors. To fix this, enable PM runtime early in the probe function and ensure clocks are acquired before register access, preventing crashes like the following on RZ/V2H:

[13.272640] Internal error: synchronous external abort: 0000000096000010 [#1] PREEMPT SMP [13.280814] Modules linked in: cec renesasusbhs(+) drmkmshelper fuse drm backlight ipv6 [13.289088] CPU: 1 UID: 0 PID: 195 Comm: (udev-worker) Not tainted 6.14.0-rc7+ #98 [13.296640] Hardware name: Renesas RZ/V2H EVK Board based on r9a09g057h44 (DT) [13.303834] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) [13.310770] pc : usbhsbset+0x14/0x4c [renesasusbhs] [13.315831] lr : usbhsprobe+0x2e4/0x5ac [renesasusbhs] [13.321138] sp : ffff8000827e3850 [13.324438] x29: ffff8000827e3860 x28: 0000000000000000 x27: ffff8000827e3ca0 [13.331554] x26: ffff8000827e3ba0 x25: ffff800081729668 x24: 0000000000000025 [13.338670] x23: ffff0000c0f08000 x22: 0000000000000000 x21: ffff0000c0f08010 [13.345783] x20: 0000000000000000 x19: ffff0000c3b52080 x18: 00000000ffffffff [13.352895] x17: 0000000000000000 x16: 0000000000000000 x15: ffff8000827e36ce [13.360009] x14: 00000000000003d7 x13: 00000000000003d7 x12: 0000000000000000 [13.367122] x11: 0000000000000000 x10: 0000000000000aa0 x9 : ffff8000827e3750 [13.374235] x8 : ffff0000c1850b00 x7 : 0000000003826060 x6 : 000000000000001c [13.381347] x5 : 000000030d5fcc00 x4 : ffff8000825c0000 x3 : 0000000000000000 [13.388459] x2 : 0000000000000400 x1 : 0000000000000000 x0 : ffff0000c3b52080 [13.395574] Call trace: [13.398013] usbhsbset+0x14/0x4c [renesasusbhs] (P) [13.403076] platformprobe+0x68/0xdc [13.406738] reallyprobe+0xbc/0x2c0 [13.410306] driverprobedevice+0x78/0x120 [13.414653] driverprobedevice+0x3c/0x154 [13.418825] driverattach+0x90/0x1a0 [13.422647] busforeachdev+0x7c/0xe0 [13.426470] driverattach+0x24/0x30 [13.430032] busadddriver+0xe4/0x208 [13.433766] driverregister+0x68/0x130 [13.437587] platformdriverregister+0x24/0x30 [13.442273] renesasusbhsdriverinit+0x20/0x1000 [renesasusbhs] [13.448450] dooneinitcall+0x60/0x1d4 [13.452276] doinitmodule+0x54/0x1f8 [13.456014] loadmodule+0x1754/0x1c98 [13.459750] initmodulefromfile+0x88/0xcc [13.464004] arm64sysfinitmodule+0x1c4/0x328 [13.468689] invokesyscall+0x48/0x104 [13.472426] el0svccommon.constprop.0+0xc0/0xe0 [13.477113] doel0svc+0x1c/0x28 [13.480415] el0svc+0x30/0xcc [13.483460] el0t64synchandler+0x10c/0x138 [13.487800] el0t64sync+0x198/0x19c [13.491453] Code: 2a0103e1 12003c42 12003c63 8b010084 (79400084) [13.497522] ---[ end trace 0000000000000000 ]---

Affected Software

10 affected componentsFixes available
Linux Linux kernel
Linux Linux kernel>=3.0<5.4.295
Linux Linux kernel>=5.5<5.10.239
Linux Linux kernel>=5.11<5.15.186
Linux Linux kernel>=5.16<6.1.142
Linux Linux kernel>=6.2<6.6.94
Linux Linux kernel>=6.7<6.12.34
Linux Linux kernel>=6.13<6.15.3
Debian Debian Linux=11.0
debian/linux
6.1.176-16.1.190-16.12.107-16.12.113-17.2.12-17.2.13-1

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade debian/linux to a version that resolves this vulnerability.

    Fixed in 6.1.176-1Fixed in 6.1.190-1Fixed in 6.12.107-1Fixed in 6.12.113-1Fixed in 7.2.12-1Fixed in 7.2.13-1
  2. Compensating control

    In the Renesas USBHS driver, reorder usbhs_probe() so runtime PM is enabled and the required clocks are acquired before any register access, including the usbhs_sys_clock_ctrl() → usbhs_bset() → usbhs_write() → iowrite16() path.

Event History

Jul 3, 2025
CVE Published
via MITRE·08:35 AM
Data Sourced
via MITRE·08:35 AM
Description
Data Sourced
via NVD·09:15 AM
RemedyDescriptionSeverityWeaknessAffected Software

Parent advisories

This vulnerability appears in the following advisories.

Peer vulnerabilities

Found alongside the following vulnerabilities.

Frequently Asked Questions

1

What is the severity of CVE-2025-38136?

CVE-2025-38136 is classified as a medium severity vulnerability.

2

How do I fix CVE-2025-38136?

To fix CVE-2025-38136, update the Linux kernel to the patched version provided by the maintainers.

3

What causes CVE-2025-38136 vulnerability?

CVE-2025-38136 is caused by an improper initialization sequence that can lead to crashes when accessing USB registers.

4

Which Linux kernel versions are affected by CVE-2025-38136?

CVE-2025-38136 affects specific versions of the Linux kernel prior to the fix implementation.

5

Is CVE-2025-38136 exploitable remotely?

CVE-2025-38136 is primarily a local vulnerability and requires access to the affected system for exploitation.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203