CVE-2024-26627

Medium

Description

In the Linux kernel, the following vulnerability has been resolved: scsi: core: Move scsi_host_busy() out of host lock for waking up EH handler Inside scsi_eh_wakeup(), scsi_host_busy() is called & checked with host lock every time for deciding if error handler kthread needs to be waken up. This can be too heavy in case of recovery, such as: - N hardware queues - queue depth is M for each hardware queue - each scsi_host_busy() iterates over (N * M) tag/requests If recovery is triggered in case that all requests are in-flight, each scsi_eh_wakeup() is strictly serialized, when scsi_eh_wakeup() is called for the last in-flight request, scsi_host_busy() has been run for (N * M - 1) times, and request has been iterated for (N*M - 1) * (N * M) times. If both N and M are big enough, hard lockup can be triggered on acquiring host lock, and it is observed on mpi3mr(128 hw queues, queue depth 8169). Fix the issue by calling scsi_host_busy() outside the host lock. We don't need the host lock for getting busy count because host the lock never covers that. [mkp: Drop unnecessary 'busy' variables pointed out by Bart]

SeverityMedium
CVSS5.5
Exploit probability—
ProductLinux Kernel
PublishedMar 6, 2024
First seenMar 6, 2024

How to fix

Update
  • linux linux_kernel5.10.210, 5.15.149, 6.1.77, 6.6.16, 6.7.4 or later

Affected products

ProductAffected versionsFixed in
linux linux_kernel5.5 ≤ v < 5.10.210, 5.11 ≤ v < 5.15.149, 5.16 ≤ v < 6.1.77, 6.2 ≤ v < 6.6.16, 6.7 ≤ v < 6.7.4, 6.85.10.210, 5.15.149, 6.1.77, 6.6.16, 6.7.4

Check your version

Choose the product and enter the version you run to see whether it falls in the affected range.

In the Intelligence 360 plan

Attack Surface Management

See the assets tied to your domains, the technologies they run and known vulnerabilities in one list.