CVE-2026-64103

scsi: isci: Fix use-after-free in device removal path

State
Published
Severity
Not scored
Published
Jul 19, 2026
Updated
Jul 19, 2026
Reserved
Jul 19, 2026

Read the record on cve.org

Description

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 isci_host_alloc() (drivers/scsi/isci/init.c:496) and scheduled from both MSI-X and legacy interrupt handlers (drivers/scsi/isci/host.c:223,613).

isci_host_deinit() stops the controller and waits for stop completion, but it never kills completion_tasklet before teardown continues. A top-of-function tasklet_kill() is not sufficient here: interrupts are only disabled when isci_host_stop_complete() runs, so until wait_for_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 wait_for_stop() returns, no further IRQ-driven scheduling can occur. Kill completion_tasklet 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->smu_registers after the host lifetime ends.

A UML + KASAN analogue reproduced the failure class both with no tasklet_kill() and with tasklet_kill() 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 wait_for_stop().

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 6f231dda68080759f1aed3769896e94c73099f0f to before 1412995e10c74644b47f242aea6e4f3d4180e806Affected
  • 6f231dda68080759f1aed3769896e94c73099f0f to before a83d3e4daba40d49324cec1c51ed261e1ea48cf1Affected
  • 6f231dda68080759f1aed3769896e94c73099f0f to before ab2266601a875982f2d2033f41e070a6d5e615e2Affected
  • 6f231dda68080759f1aed3769896e94c73099f0f to before 309c6058622d080fe8c2fab87c30da82d834d989Affected
  • 6f231dda68080759f1aed3769896e94c73099f0f to before cb9e72c50e6c81a5903f27e0b397ce8525d7539bAffected
  • 6f231dda68080759f1aed3769896e94c73099f0f to before b9ff8631006233ba246828ac70409d2cb2da38d3Affected
  • 6f231dda68080759f1aed3769896e94c73099f0f to before 6d40f2f103bb30f52f3dbadbe2c3fdf274a9763cAffected
  • 6f231dda68080759f1aed3769896e94c73099f0f to before b52a8d52c3125ec9a93106ed816582368de34426Affected
LinuxLinux
  • 3.0Affected
  • before 3.0Not affected
  • 5.10.258 through 5.10.*Not affected
  • 5.15.209 through 5.15.*Not affected
  • 6.1.175 through 6.1.*Not affected
  • 6.6.142 through 6.6.*Not affected
  • 6.12.92 through 6.12.*Not affected
  • 6.18.34 through 6.18.*Not affected
  • 7.0.11 through 7.0.*Not affected
  • 7.1 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.