The Parfait (version 2.1.0) static code analysis tool found the
following NULL pointer dereference problem.

dev_to_shost() in include/scsi/scsi_host.h has the ability to return
NULL if the scsi host device does not have the Scsi_host->parent
field set.  With the possibilty of a NULL pointer being set for
the Scsi_Host->parent field, calls to host_to_us() have to make
sure the return pointer is not null.  Changes were made to check
for a return value of NULL on calls to host_to_us().

Signed-off-by: Joe Moriarty <joe.moria...@oracle.com>
Reviewed-by: Steven Sistare <steven.sist...@oracle.com>
Acked-by: Hakon Bugge <hakon.bu...@oracle.com>
---
 drivers/usb/storage/scsiglue.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c
index c267f2812a04..00a8cb005e83 100644
--- a/drivers/usb/storage/scsiglue.c
+++ b/drivers/usb/storage/scsiglue.c
@@ -329,7 +329,18 @@ static int slave_configure(struct scsi_device *sdev)
 
 static int target_alloc(struct scsi_target *starget)
 {
-       struct us_data *us = host_to_us(dev_to_shost(starget->dev.parent));
+       struct Scsi_Host *host;
+       struct us_data *us;
+
+       host = dev_to_shost(starget->dev.parent);
+       if (!host) {
+               dev_dbg(&(starget)->dev,
+                       "SCSI Host not found, Error in %s: us = NULL\n",
+                       __func__);
+               return -ENODEV;
+       }
+
+       us = host_to_us(host);
 
        /*
         * Some USB drives don't support REPORT LUNS, even though they
-- 
2.15.0

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to