]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
scsi: aic94xx: fix use-after-free in device removal path
authorJunrui Luo <moonafterrain@outlook.com>
Tue, 28 Oct 2025 16:29:04 +0000 (00:29 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 19 Jan 2026 12:11:49 +0000 (13:11 +0100)
commit f6ab594672d4cba08540919a4e6be2e202b60007 upstream.

The asd_pci_remove() function fails to synchronize with pending tasklets
before freeing the asd_ha structure, leading to a potential
use-after-free vulnerability.

When a device removal is triggered (via hot-unplug or module unload),
race condition can occur.

The fix adds tasklet_kill() before freeing the asd_ha structure,
ensuring all scheduled tasklets complete before cleanup proceeds.

Reported-by: Yuhao Jiang <danisjiang@gmail.com>
Reported-by: Junrui Luo <moonafterrain@outlook.com>
Fixes: 2908d778ab3e ("[SCSI] aic94xx: new driver")
Cc: stable@vger.kernel.org
Signed-off-by: Junrui Luo <moonafterrain@outlook.com>
Link: https://patch.msgid.link/ME2PR01MB3156AB7DCACA206C845FC7E8AFFDA@ME2PR01MB3156.ausprd01.prod.outlook.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/scsi/aic94xx/aic94xx_init.c

index 7a78606598c4bfc42184291b88bdd742ea32044b..356bd3363ae308986810d6fce727deffea6a0ac5 100644 (file)
@@ -897,6 +897,9 @@ static void asd_pci_remove(struct pci_dev *dev)
 
        asd_disable_ints(asd_ha);
 
+       /* Ensure all scheduled tasklets complete before freeing resources */
+       tasklet_kill(&asd_ha->seq.dl_tasklet);
+
        asd_remove_dev_attrs(asd_ha);
 
        /* XXX more here as needed */