VYPR
Medium severity5.5NVD Advisory· Published May 1, 2024· Updated May 12, 2026

CVE-2024-26935

CVE-2024-26935

Description

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

scsi: core: Fix unremoved procfs host directory regression

Commit fc663711b944 ("scsi: core: Remove the /proc/scsi/${proc_name} directory earlier") fixed a bug related to modules loading/unloading, by adding a call to scsi_proc_hostdir_rm() on scsi_remove_host(). But that led to a potential duplicate call to the hostdir_rm() routine, since it's also called from scsi_host_dev_release(). That triggered a regression report, which was then fixed by commit be03df3d4bfe ("scsi: core: Fix a procfs host directory removal regression"). The fix just dropped the hostdir_rm() call from dev_release().

But it happens that this proc directory is created on scsi_host_alloc(), and that function "pairs" with scsi_host_dev_release(), while scsi_remove_host() pairs with scsi_add_host(). In other words, it seems the reason for removing the proc directory on dev_release() was meant to cover cases in which a SCSI host structure was allocated, but the call to scsi_add_host() didn't happen. And that pattern happens to exist in some error paths, for example.

Syzkaller causes that by using USB raw gadget device, error'ing on usb-storage driver, at usb_stor_probe2(). By checking that path, we can see that the BadDevice label leads to a scsi_host_put() after a SCSI host allocation, but there's no call to scsi_add_host() in such path. That leads to messages like this in dmesg (and a leak of the SCSI host proc structure):

usb-storage 4-1:87.51: USB Mass Storage device detected proc_dir_entry 'scsi/usb-storage' already registered WARNING: CPU: 1 PID: 3519 at fs/proc/generic.c:377 proc_register+0x347/0x4e0 fs/proc/generic.c:376

The proper fix seems to still call scsi_proc_hostdir_rm() on dev_release(), but guard that with the state check for SHOST_CREATED; there is even a comment in scsi_host_dev_release() detailing that: such conditional is meant for cases where the SCSI host was allocated but there was no calls to {add,remove}_host(), like the usb-storage case.

This is what we propose here and with that, the error path of usb-storage does not trigger the warning anymore.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

A Linux kernel procfs directory removal regression in the SCSI core can cause a double-registration warning and memory leak when a SCSI host is allocated without a corresponding add_host call.

Vulnerability

A regression in the Linux kernel's SCSI core, introduced by commit fc663711b944 and incompletely fixed by commit be03df3d4bfe, can cause a double-registration warning and memory leak when a SCSI host is allocated via scsi_host_alloc() but scsi_add_host() is never called (e.g., in error paths such as usb_stor_probe2() failures). The problem occurs because scsi_proc_hostdir_rm() is called in scsi_remove_host() but was also originally called in scsi_host_dev_release(). The earlier fix removed the call from dev_release(), but that change missed cases where the host is allocated but add/remove_host are never called, leading to a leftover proc directory entry that causes a "already registered" warning [1].

Exploitation

An attacker with local access can trigger the vulnerability by using a USB raw gadget device to cause a USB storage driver probe failure, resulting in a SCSI host allocation without a subsequent scsi_add_host() call. This can be done without requiring any special privileges beyond physical or emulated USB device attachment. The attack path is specifically through the usb-storage driver's error handling [1].

Impact

The vulnerability leads to a kernel warning (WARNING: CPU: ... at fs/proc/generic.c:377 proc_register+0x347/0x4e0) and a memory leak of the SCSI host proc structure. While the immediate impact is limited to a denial-of-service condition (dmesg spam and potential resource exhaustion), the issue could potentially be leveraged in more complex attacks if combined with other vulnerabilities [1].

Mitigation

The fix, implemented in commit d4c34782b6d7 (stable kernel), restores the call to scsi_proc_hostdir_rm() in scsi_host_dev_release() but guards it with a check for the SHOST_CREATED state. This ensures the proc directory is only removed when the host was fully allocated but never added, preventing the double-registration [1]. The Linux kernel stable branches have applied the fix (see references for specific commits).

References
  1. SSA-265688

AI Insight generated on May 20, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.

Affected products

248

Patches

0

No patches discovered yet.

Vulnerability mechanics

AI mechanics synthesis has not run for this CVE yet.

References

10

News mentions

0

No linked articles in our index yet.