From: Hannes Reinecke <hare@suse.de>
To: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: Christoph Hellwig <hch@lst.de>,
James Bottomley <james.bottomley@hansenpartnership.com>,
linux-scsi@vger.kernel.org, Hannes Reinecke <hare@suse.de>
Subject: [PATCH] pmcraid: add missing scsi_device_put() in pmcraid_eh_target_reset_handler()
Date: Tue, 17 Oct 2023 09:21:45 +0200 [thread overview]
Message-ID: <20231017072145.120795-1-hare@suse.de> (raw)
(Re-sending as a separate patch:)
When breaking out of a shost_for_each_device() loop one need to do
an explicit scsi_device_put(). And while at it convert to use
shost_priv() instead of a direct reference to ->hostdata.
Fixes: c2a14ab3b9b3 ("scsi: pmcraid: Select device in pmcraid_eh_target_reset_handler()")
Signed-off-by: Hannes Reinecke <hare@suse.de>
---
drivers/scsi/pmcraid.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c
index a831b34c08a4..d946fb014474 100644
--- a/drivers/scsi/pmcraid.c
+++ b/drivers/scsi/pmcraid.c
@@ -2702,8 +2702,7 @@ static int pmcraid_reset_device(
unsigned long lock_flags;
u32 ioasc;
- pinstance =
- (struct pmcraid_instance *)scsi_dev->host->hostdata;
+ pinstance = shost_priv(scsi_dev->host);
res = scsi_dev->hostdata;
if (!res) {
@@ -3026,8 +3025,7 @@ static int pmcraid_eh_device_reset_handler(struct scsi_cmnd *scmd)
static int pmcraid_eh_bus_reset_handler(struct scsi_cmnd *scmd)
{
struct Scsi_Host *host = scmd->device->host;
- struct pmcraid_instance *pinstance =
- (struct pmcraid_instance *)host->hostdata;
+ struct pmcraid_instance *pinstance = shost_priv(host);
struct pmcraid_resource_entry *res = NULL;
struct pmcraid_resource_entry *temp;
struct scsi_device *sdev = NULL;
@@ -3066,6 +3064,7 @@ static int pmcraid_eh_target_reset_handler(struct scsi_cmnd *scmd)
{
struct Scsi_Host *shost = scmd->device->host;
struct scsi_device *scsi_dev = NULL, *tmp;
+ int ret;
shost_for_each_device(tmp, shost) {
if ((tmp->channel == scmd->device->channel) &&
@@ -3078,9 +3077,11 @@ static int pmcraid_eh_target_reset_handler(struct scsi_cmnd *scmd)
return FAILED;
sdev_printk(KERN_INFO, scsi_dev,
"Doing target reset due to an I/O command timeout.\n");
- return pmcraid_reset_device(scsi_dev,
- PMCRAID_INTERNAL_TIMEOUT,
- RESET_DEVICE_TARGET);
+ ret = pmcraid_reset_device(scsi_dev,
+ PMCRAID_INTERNAL_TIMEOUT,
+ RESET_DEVICE_TARGET);
+ scsi_device_put(scsi_dev);
+ return ret;
}
/**
--
2.35.3
next reply other threads:[~2023-10-17 7:21 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-17 7:21 Hannes Reinecke [this message]
2023-10-17 7:31 ` [PATCH] pmcraid: add missing scsi_device_put() in pmcraid_eh_target_reset_handler() Christoph Hellwig
-- strict thread matches above, loose matches on Subject: below --
2023-10-23 7:29 Hannes Reinecke
2023-10-24 6:24 ` Christoph Hellwig
2023-10-25 2:24 ` Martin K. Petersen
2023-10-30 15:34 ` Martin K. Petersen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231017072145.120795-1-hare@suse.de \
--to=hare@suse.de \
--cc=hch@lst.de \
--cc=james.bottomley@hansenpartnership.com \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.