CVE-2024-56545

CVE-2024-56545

Medium · published December 27, 2024

CVSS v3.1
5.5
EPSS
0%
Percentile
11.6
In the wild
Unconfirmed
What it is

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

HID: hyperv: streamline driver probe to avoid devres issues

It was found that unloading 'hid_hyperv' module results in a devres

complaint:

...

hv_vmbus: unregistering driver hid_hyperv

------------[ cut here ]------------

WARNING: CPU: 2 PID: 3983 at drivers/base/devres.c:691 devres_release_group+0x1f2/0x2c0

...

Call Trace:

<TASK>

? devres_release_group+0x1f2/0x2c0

? __warn+0xd1/0x1c0

? devres_release_group+0x1f2/0x2c0

? report_bug+0x32a/0x3c0

? handle_bug+0x53/0xa0

? exc_invalid_op+0x18/0x50

? asm_exc_invalid_op+0x1a/0x20

? devres_release_group+0x1f2/0x2c0

? devres_release_group+0x90/0x2c0

? rcu_is_watching+0x15/0xb0

? __pfx_devres_release_group+0x10/0x10

hid_device_remove+0xf5/0x220

device_release_driver_internal+0x371/0x540

? klist_put+0xf3/0x170

bus_remove_device+0x1f1/0x3f0

device_del+0x33f/0x8c0

? __pfx_device_del+0x10/0x10

? cleanup_srcu_struct+0x337/0x500

hid_destroy_device+0xc8/0x130

mousevsc_remove+0xd2/0x1d0 [hid_hyperv]

device_release_driver_internal+0x371/0x540

driver_detach+0xc5/0x180

bus_remove_driver+0x11e/0x2a0

? __mutex_unlock_slowpath+0x160/0x5e0

vmbus_driver_unregister+0x62/0x2b0 [hv_vmbus]

...

And the issue seems to be that the corresponding devres group is not

allocated. Normally, devres_open_group() is called from

__hid_device_probe() but Hyper-V HID driver overrides 'hid_dev->driver'

with 'mousevsc_hid_driver' stub and basically re-implements

__hid_device_probe() by calling hid_parse() and hid_hw_start() but not

devres_open_group(). hid_device_probe() does not call __hid_device_probe()

for it. Later, when the driver is removed, hid_device_remove() calls

devres_release_group() as it doesn't check whether hdev->driver was

initially overridden or not.

The issue seems to be related to the commit 62c68e7cee33 ("HID: ensure

timely release of driver-allocated resources") but the commit itself seems

to be correct.

Fix the issue by dropping the 'hid_dev->driver' override and using

hid_register_driver()/hid_unregister_driver() instead. Alternatively, it

would have been possible to rely on the default handling but

HID_CONNECT_DEFAULT implies HID_CONNECT_HIDRAW and it doesn't seem to work

for mousevsc as-is.

The record
Technical detail
CVSS v3.1
5.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00218 · 11.6th percentile
Published
2024-12-27T19:15Z
Affected products (3)
ProductVersionsFixed in
linux/linux_kernel≥ 6.5, < 6.6.646.6.64
linux/linux_kernel≥ 6.7, < 6.11.116.11.11
linux/linux_kernel≥ 6.12, < 6.12.26.12.2
References (7)
EPSS history
Timeline
  • 27 DEC 14:11Z
    HID: hyperv: streamline driver probe to avoid devres issues
    cvelistv5