]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ata: libata-scsi: Add missing scsi_device_put() in ata_scsi_dev_rescan()
authorYihang Li <liyihang9@h-partners.com>
Thu, 20 Nov 2025 03:50:23 +0000 (11:50 +0800)
committerNiklas Cassel <cassel@kernel.org>
Thu, 20 Nov 2025 12:12:26 +0000 (13:12 +0100)
Call scsi_device_put() in ata_scsi_dev_rescan() if the device or its
queue are not running.

Fixes: 0c76106cb975 ("scsi: sd: Fix TCG OPAL unlock on system resume")
Cc: stable@vger.kernel.org
Signed-off-by: Yihang Li <liyihang9@h-partners.com>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Signed-off-by: Niklas Cassel <cassel@kernel.org>
drivers/ata/libata-scsi.c

index b43a3196e2be83d50f528de7b88574d159a4a1a4..3fb84f6906443963e3c39a1d5328abe57304bafa 100644 (file)
@@ -4894,8 +4894,10 @@ void ata_scsi_dev_rescan(struct work_struct *work)
                        spin_unlock_irqrestore(ap->lock, flags);
                        if (do_resume) {
                                ret = scsi_resume_device(sdev);
-                               if (ret == -EWOULDBLOCK)
+                               if (ret == -EWOULDBLOCK) {
+                                       scsi_device_put(sdev);
                                        goto unlock_scan;
+                               }
                                dev->flags &= ~ATA_DFLAG_RESUMING;
                        }
                        ret = scsi_rescan_device(sdev);