On 11/06/2014 08:40 AM, Christoph Hellwig wrote: > scsi_reset_provider already manually runs all queues for the given host, > so it doesn't need the scsi_run_queues call from it, and it doesn't need > a reference on the device because it's synchronous. > > So let's just call scsi_put_command directly and avoid the device reference > dance to simplify the code. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > Reviewed-by: Bart Van Assche <bvanassche@xxxxxxx> > --- > drivers/scsi/scsi_error.c | 11 +++-------- > 1 file changed, 3 insertions(+), 8 deletions(-) > > diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c > index ba19687..a1ffdb0 100644 > --- a/drivers/scsi/scsi_error.c > +++ b/drivers/scsi/scsi_error.c > @@ -2335,14 +2335,9 @@ scsi_ioctl_reset(struct scsi_device *dev, int __user *arg) > return -EIO; > > error = -EIO; > - if (!get_device(&dev->sdev_gendev)) > - goto out_put_autopm_host; > - > scmd = scsi_get_command(dev, GFP_KERNEL); > - if (!scmd) { > - put_device(&dev->sdev_gendev); > + if (!scmd) > goto out_put_autopm_host; > - } > > blk_rq_init(NULL, &req); > scmd->request = &req; > @@ -2404,10 +2399,10 @@ scsi_ioctl_reset(struct scsi_device *dev, int __user *arg) > "waking up host to restart after TMF\n")); > > wake_up(&shost->host_wait); > - > scsi_run_host_queues(shost); > > - scsi_next_command(scmd); > + scsi_put_command(scmd); > + > out_put_autopm_host: > scsi_autopm_put_host(shost); > return error; > Reviewed-by: Hannes Reinecke <hare@xxxxxxx> Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare@xxxxxxx +49 911 74053 688 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: J. Hawn, J. Guild, F. Imendörffer, HRB 21284 (AG Nürnberg) -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html