CVE-2024-26933

USB: core: Fix deadlock in port "disable" sysfs attribute

published May 1, 2024

CVSS
—
EPSS
0%
Percentile
6.9
In the wild
Unconfirmed
What it is

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

USB: core: Fix deadlock in port "disable" sysfs attribute

The show and store callback routines for the "disable" sysfs attribute

file in port.c acquire the device lock for the port's parent hub

device. This can cause problems if another process has locked the hub

to remove it or change its configuration:

Removing the hub or changing its configuration requires the

hub interface to be removed, which requires the port device

to be removed, and device_del() waits until all outstanding

sysfs attribute callbacks for the ports have returned. The

lock can't be released until then.

But the disable_show() or disable_store() routine can't return

until after it has acquired the lock.

The resulting deadlock can be avoided by calling

sysfs_break_active_protection(). This will cause the sysfs core not

to wait for the attribute's callback routine to return, allowing the

removal to proceed. The disadvantage is that after making this call,

there is no guarantee that the hub structure won't be deallocated at

any moment. To prevent this, we have to acquire a reference to it

first by calling hub_get().

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00177 · 6.9th percentile
Published
2024-05-01T05:17Z
EPSS history
Timeline
  • 01 MAY 05:17Z
    USB: core: Fix deadlock in port "disable" sysfs attribute
    cvelistv5