Skip to content

Commit 0b1b4b0

Browse files
hreineckemartinkpetersen
authored andcommitted
scsi: pmcraid: Add missing scsi_device_put() in pmcraid_eh_target_reset_handler()
When breaking out of an shost_for_each_device() loop one needs to do an explicit scsi_device_put(). Fixes: c2a14ab ("scsi: pmcraid: Select device in pmcraid_eh_target_reset_handler()") Signed-off-by: Hannes Reinecke <hare@suse.de> Link: https://lore.kernel.org/r/20231023072957.20191-1-hare@suse.de Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
1 parent 96f41cd commit 0b1b4b0

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

drivers/scsi/pmcraid.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3066,6 +3066,7 @@ static int pmcraid_eh_target_reset_handler(struct scsi_cmnd *scmd)
30663066
{
30673067
struct Scsi_Host *shost = scmd->device->host;
30683068
struct scsi_device *scsi_dev = NULL, *tmp;
3069+
int ret;
30693070

30703071
shost_for_each_device(tmp, shost) {
30713072
if ((tmp->channel == scmd->device->channel) &&
@@ -3078,9 +3079,11 @@ static int pmcraid_eh_target_reset_handler(struct scsi_cmnd *scmd)
30783079
return FAILED;
30793080
sdev_printk(KERN_INFO, scsi_dev,
30803081
"Doing target reset due to an I/O command timeout.\n");
3081-
return pmcraid_reset_device(scsi_dev,
3082-
PMCRAID_INTERNAL_TIMEOUT,
3083-
RESET_DEVICE_TARGET);
3082+
ret = pmcraid_reset_device(scsi_dev,
3083+
PMCRAID_INTERNAL_TIMEOUT,
3084+
RESET_DEVICE_TARGET);
3085+
scsi_device_put(scsi_dev);
3086+
return ret;
30843087
}
30853088

30863089
/**

0 commit comments

Comments
 (0)