]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 1 Dec 2025 10:43:22 +0000 (11:43 +0100)
commit b32cc17d607e8ae7af037303fe101368cb4dc44c upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/ata/libata-scsi.c

index 7a70e870703dcade27aff89abf1e5daa0ae24eff..74842750b2ed40f81322b78a393f783532bedb39 100644 (file)
@@ -4807,8 +4807,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);