Unscored severity · published Oct 28, 2026
CVE-2026-99156
scsi: st: Fix use-after-free race between st_remove() and st_open()
New
–
CVSS
–
EPSS
No
On KEV
Description
In the Linux kernel, the following vulnerability has been resolved:
scsi: st: Fix use-after-free race between st_remove() and st_open()
st_remove() drops the probe reference on the scsi_tape with kref_put()
and only afterwards removes its index from st_index_idr. If that was the
last reference, scsi_tape_release() frees the structure while it is
still published in the idr.
scsi_tape_get(), called from st_open(), looks up the tape in
st_index_idr and takes a reference under st_ref_mutex and
st_index_lock. remove_cdevs() does not wait for opens that are already
past chrdev_open(), so an open that is blocked on st_ref_mutex while
st_remove() holds it can take the mutex as soon as st_remove() drops it,
find the freed tpnt in the idr and call kref_get() on it:
BUG: KASAN: slab-use-after-free in st_open
Write of size 4 ...
st_open (drivers/scsi/st.c:254 drivers/scsi/st.c:1291)
chrdev_open
...
Freed by task ...:
kfree
st_remove (drivers/scsi/st.c:4512)
Remove the index from the idr before dropping the reference, all under
st_ref_mutex. A concurrent scsi_tape_get() now either runs first and
holds a valid reference that keeps the tape alive, or runs afterwards
and finds nothing, so st_open() fails with -ENXIO.
This restores the ordering st_remove() had before the conversion to
st_index_idr, where the tape was unpublished from scsi_tapes[] before
the final kref_put().
Exploitation
Is it being used?
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
LI
Linux · Linux
6c648d95a6af4a79241a916871df17c84c68ea20 before a1647b653549ff29f0422a63eabf329b842f3822; 6c648d95a6af4a79241a916871df17c84c68ea20 before 18a0e3733ce38718688e813e5e2d1106bd4830e5; 6c648d95a6af4a79241a916871df17c84c68ea20 before 71caf7f84bd62a4bf91cc95abd2de690afb8d15f; 3.7 · source: vendor
References
NVD
https://nvd.nist.gov/vuln/detail/CVE-2026-99156
CVE.org
https://www.cve.org/CVERecord?id=CVE-2026-99156
git.kernel.org
https://git.kernel.org/stable/c/a1647b653549ff29f0422a63eabf329b842f3822
git.kernel.org
https://git.kernel.org/stable/c/18a0e3733ce38718688e813e5e2d1106bd4830e5
git.kernel.org
https://git.kernel.org/stable/c/71caf7f84bd62a4bf91cc95abd2de690afb8d15f
More from Linux
9.8
CVE-2025-39682
tls: fix handling of zero-length records on the rx_list
8.8
CVE-2026-53266
netfilter: bridge: make ebt_snat ARP rewrite writable
7.8
CVE-2026-53362
ipv6: account for fraggap on the paged allocation path
7.8
CVE-2026-31431
crypto: algif_aead - Revert to operating out-of-place
7.8
CVE-2025-38352
posix-cpu-timers: fix race between handle_posix_cpu_timers() and posix_cpu_timer_del()
