CVE: CVE-2025-38136
Published: 2025-07-03
Description: In the Linux kernel, the following vulnerability has been resolved:

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

Reorder the initialization sequence in `usbhs_probe()` 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:

    usbhs_probe()
        usbhs_sys_clock_ctrl()
            usbhs_bset()
                usbhs_write()
                    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: [PII_REDACTED] [#1] PREEMPT SMP
[13.280814] Modules linked in: cec renesas_usbhs(+) drm_kms_helper 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 : usbhs_bset+0x14/0x4c [renesas_usbhs]
[13.315831] lr : usbhs_probe+0x2e4/0x5ac [renesas_usbhs]
[13.321138] sp : ffff8000827e3850
[13.324438] x29: ffff8000827e3860 x28: [PII_REDACTED] x27: ffff8000827e3ca0
[13.331554] x26: ffff8000827e3ba0 x25: ffff[PII_REDACTED]68 x24: [PII_REDACTED]
[13.338670] x23: ffff0000c0f08000 x22: [PII_REDACTED] x21: ffff0000c0f08010
[13.345783] x20: [PII_REDACTED] x19: ffff0000c3b52080 x18: 00000000ffffffff
[13.352895] x17: [PII_REDACTED] x16: [PII_REDACTED] x15: ffff8000827e36ce
[13.360009] x14:[PII_REDACTED]0003d7 x13:[PII_REDACTED]0003d7 x12: [PII_REDACTED]
[13.367122] x11: [PII_REDACTED] x10:[PII_REDACTED]000aa0 x9 : ffff8000827e3750
[13.374235] x8 : ffff0000c1850b00 x7 : [PII_REDACTED] x6 :[PII_REDACTED]00001c
[13.381347] x5 : 000000030d5fcc00 x4 : ffff8000825c0000 x3 : [PII_REDACTED]
[13.388459] x2 : [PII_REDACTED] x1 : [PII_REDACTED] x0 : ffff0000c3b52080
[13.395574] Call trace:
[13.398013]  usbhs_bset+0x14/0x4c [renesas_usbhs] (P)
[13.403076]  platform_probe+0x68/0xdc
[13.406738]  really_probe+0xbc/0x2c0
[13.410306]  __driver_probe_device+0x78/0x120
[13.414653]  driver_probe_device+0x3c/0x154
[13.418825]  __driver_attach+0x90/0x1a0
[13.422647]  bus_for_each_dev+0x7c/0xe0
[13.426470]  driver_attach+0x24/0x30
[13.430032]  bus_add_driver+0xe4/0x208
[13.433766]  driver_register+0x68/0x130
[13.437587]  __platform_driver_register+0x24/0x30
[13.442273]  renesas_usbhs_driver_init+0x20/0x1000 [renesas_usbhs]
[13.448450]  do_one_initcall+0x60/0x1d4
[13.452276]  do_init_module+0x54/0x1f8
[13.456014]  load_module+0x1754/0x1c98
[13.459750]  init_module_from_file+0x88/0xcc
[13.464004]  __arm64_sys_finit_module+0x1c4/0x328
[13.468689]  invoke_syscall+0x48/0x104
[13.472426]  el0_svc_common.constprop.0+0xc0/0xe0
[13.477113]  do_el0_svc+0x1c/0x28
[13.480415]  el0_svc+0x30/0xcc
[13.483460]  el0t_64_sync_handler+0x10c/0x138
[13.487800]  el0t_64_sync+0x198/0x19c
[13.491453] Code: 2a0103e1 12003c42 12003c63 8b010084 (79400084)
[13.497522] ---[ end trace [PII_REDACTED] ]---
CVSS Score: 5.5 (MEDIUM)
CWE: CWE-908
References: https://git.kernel.org/stable/c/095cc0b5888acc228f12344e85b17539b9ce9367; https://git.kernel.org/stable/c/0a1e16a6cbf4452b46f20b862d6141a1e90844ee; https://git.kernel.org/stable/c/155453ada562c450a4ff5fcf4852b9fa5b6b793a