CVE-2024-36962
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
03/06/2024
Last modified:
01/10/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
net: ks8851: Queue RX packets in IRQ handler instead of disabling BHs<br />
<br />
Currently the driver uses local_bh_disable()/local_bh_enable() in its<br />
IRQ handler to avoid triggering net_rx_action() softirq on exit from<br />
netif_rx(). The net_rx_action() could trigger this driver .start_xmit<br />
callback, which is protected by the same lock as the IRQ handler, so<br />
calling the .start_xmit from netif_rx() from the IRQ handler critical<br />
section protected by the lock could lead to an attempt to claim the<br />
already claimed lock, and a hang.<br />
<br />
The local_bh_disable()/local_bh_enable() approach works only in case<br />
the IRQ handler is protected by a spinlock, but does not work if the<br />
IRQ handler is protected by mutex, i.e. this works for KS8851 with<br />
Parallel bus interface, but not for KS8851 with SPI bus interface.<br />
<br />
Remove the BH manipulation and instead of calling netif_rx() inside<br />
the IRQ handler code protected by the lock, queue all the received<br />
SKBs in the IRQ handler into a queue first, and once the IRQ handler<br />
exits the critical section protected by the lock, dequeue all the<br />
queued SKBs and push them all into netif_rx(). At this point, it is<br />
safe to trigger the net_rx_action() softirq, since the netif_rx()<br />
call is outside of the lock that protects the IRQ handler.
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.1.87 (including) | 6.1.91 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.6.28 (including) | 6.6.31 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.8.7 (including) | 6.8.10 (excluding) |
| cpe:2.3:o:linux:linux_kernel:6.9:rc4:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.9:rc5:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.9:rc6:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.9:rc7:*:*:*:*:*:* |
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/7e2901a2a9195da76111f351584bf77552a038f0
- https://git.kernel.org/stable/c/8a3ff43dcbab7c96f9e8cf2bd1049ab8d6e59545
- https://git.kernel.org/stable/c/ae87f661f3c1a3134a7ed86ab69bf9f12af88993
- https://git.kernel.org/stable/c/e0863634bf9f7cf36291ebb5bfa2d16632f79c49
- https://git.kernel.org/stable/c/7e2901a2a9195da76111f351584bf77552a038f0
- https://git.kernel.org/stable/c/8a3ff43dcbab7c96f9e8cf2bd1049ab8d6e59545
- https://git.kernel.org/stable/c/ae87f661f3c1a3134a7ed86ab69bf9f12af88993
- https://git.kernel.org/stable/c/e0863634bf9f7cf36291ebb5bfa2d16632f79c49



