In the Linux kernel, the following vulnerability has been resolved:
scsi: isci: Fix use-after-free in device removal path
The ISCI completion tasklet is initialized in iscihostalloc() (drivers/scsi/isci/init.c:496) and scheduled from both MSI-X and legacy interrupt handlers (drivers/scsi/isci/host.c:223,613).
iscihostdeinit() stops the controller and waits for stop completion, but it never kills completiontasklet before teardown continues. A top-of-function taskletkill() is not sufficient here: interrupts are only disabled when iscihoststopcomplete() runs, so until waitfor_stop() returns the IRQ handlers can still requeue the tasklet. The tasklet callback also re-enables interrupts after draining completions, so killing the tasklet before the source is quiesced leaves the same race open.
Once waitforstop() returns, no further IRQ-driven scheduling can occur. Kill completiontasklet there so teardown cannot race a queued tasklet running on a dead ihost. On remove or unload, the stale callback can otherwise dereference ihost and touch ihost->smuregisters after the host lifetime ends.
A UML + KASAN analogue reproduced the failure class both with no taskletkill() and with taskletkill() placed before source quiesce, and stayed clean once the kill happened after quiescing the scheduling source.
This mirrors commit f6ab594672d4 ("scsi: aic94xx: fix use-after-free in device removal path"), but ISCI needs the kill after waitforstop().
{
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/64xxx/CVE-2026-64103.json",
"cna_assigner": "Linux"
}