CVE-2024-36950
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
30/05/2024
Last modified:
17/12/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
firewire: ohci: mask bus reset interrupts between ISR and bottom half<br />
<br />
In the FireWire OHCI interrupt handler, if a bus reset interrupt has<br />
occurred, mask bus reset interrupts until bus_reset_work has serviced and<br />
cleared the interrupt.<br />
<br />
Normally, we always leave bus reset interrupts masked. We infer the bus<br />
reset from the self-ID interrupt that happens shortly thereafter. A<br />
scenario where we unmask bus reset interrupts was introduced in 2008 in<br />
a007bb857e0b26f5d8b73c2ff90782d9c0972620: If<br />
OHCI_PARAM_DEBUG_BUSRESETS (8) is set in the debug parameter bitmask, we<br />
will unmask bus reset interrupts so we can log them.<br />
<br />
irq_handler logs the bus reset interrupt. However, we can&#39;t clear the bus<br />
reset event flag in irq_handler, because we won&#39;t service the event until<br />
later. irq_handler exits with the event flag still set. If the<br />
corresponding interrupt is still unmasked, the first bus reset will<br />
usually freeze the system due to irq_handler being called again each<br />
time it exits. This freeze can be reproduced by loading firewire_ohci<br />
with "modprobe firewire_ohci debug=-1" (to enable all debugging output).<br />
Apparently there are also some cases where bus_reset_work will get called<br />
soon enough to clear the event, and operation will continue normally.<br />
<br />
This freeze was first reported a few months after a007bb85 was committed,<br />
but until now it was never fixed. The debug level could safely be set<br />
to -1 through sysfs after the module was loaded, but this would be<br />
ineffectual in logging bus reset interrupts since they were only<br />
unmasked during initialization.<br />
<br />
irq_handler will now leave the event flag set but mask bus reset<br />
interrupts, so irq_handler won&#39;t be called again and there will be no<br />
freeze. If OHCI_PARAM_DEBUG_BUSRESETS is enabled, bus_reset_work will<br />
unmask the interrupt after servicing the event, so future interrupts<br />
will be caught as desired.<br />
<br />
As a side effect to this change, OHCI_PARAM_DEBUG_BUSRESETS can now be<br />
enabled through sysfs in addition to during initial module loading.<br />
However, when enabled through sysfs, logging of bus reset interrupts will<br />
be effective only starting with the second bus reset, after<br />
bus_reset_work has executed.
Impact
Base Score 3.x
4.40
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.19.314 (excluding) | |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.20 (including) | 5.4.276 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.5 (including) | 5.10.217 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.159 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 6.1.91 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (including) | 6.6.31 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.8.10 (excluding) |
| cpe:2.3:o:linux:linux_kernel:6.9:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.9:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:debian:debian_linux:10.0:*:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/31279bbca40d2f40cb3bbb6d538ec9620a645dec
- https://git.kernel.org/stable/c/4f9cc355c328fc4f41cbd9c4cd58b235184fa420
- https://git.kernel.org/stable/c/5982887de60c1b84f9c0ca07c835814d07fd1da0
- https://git.kernel.org/stable/c/6fafe3661712b143d9c69a7322294bd53f559d5d
- https://git.kernel.org/stable/c/752e3c53de0fa3b7d817a83050b6699b8e9c6ec9
- https://git.kernel.org/stable/c/8643332aac0576581cfdf01798ea3e4e0d624b61
- https://git.kernel.org/stable/c/b3948c69d60279fce5b2eeda92a07d66296c8130
- https://git.kernel.org/stable/c/fa273f312334246c909475c5868e6daab889cc8c
- https://git.kernel.org/stable/c/31279bbca40d2f40cb3bbb6d538ec9620a645dec
- https://git.kernel.org/stable/c/4f9cc355c328fc4f41cbd9c4cd58b235184fa420
- https://git.kernel.org/stable/c/5982887de60c1b84f9c0ca07c835814d07fd1da0
- https://git.kernel.org/stable/c/6fafe3661712b143d9c69a7322294bd53f559d5d
- https://git.kernel.org/stable/c/752e3c53de0fa3b7d817a83050b6699b8e9c6ec9
- https://git.kernel.org/stable/c/8643332aac0576581cfdf01798ea3e4e0d624b61
- https://git.kernel.org/stable/c/b3948c69d60279fce5b2eeda92a07d66296c8130
- https://git.kernel.org/stable/c/fa273f312334246c909475c5868e6daab889cc8c
- https://lists.debian.org/debian-lts-announce/2024/06/msg00019.html
- https://lists.debian.org/debian-lts-announce/2024/06/msg00020.html



