aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/scsi.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index eedfd059b82b..c35f5fc0d668 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -873,10 +873,12 @@ EXPORT_SYMBOL(scsi_device_get);
873 */ 873 */
874void scsi_device_put(struct scsi_device *sdev) 874void scsi_device_put(struct scsi_device *sdev)
875{ 875{
876 struct module *module = sdev->host->hostt->module;
877
876 /* The module refcount will be zero if scsi_device_get() 878 /* The module refcount will be zero if scsi_device_get()
877 * was called from a module removal routine */ 879 * was called from a module removal routine */
878 if (likely(module_refcount(sdev->host->hostt->module) != 0)) 880 if (module && module_refcount(module) != 0)
879 module_put(sdev->host->hostt->module); 881 module_put(module);
880 put_device(&sdev->sdev_gendev); 882 put_device(&sdev->sdev_gendev);
881} 883}
882EXPORT_SYMBOL(scsi_device_put); 884EXPORT_SYMBOL(scsi_device_put);