[SCSI] hptiop: Eliminate a NULL pointer dereference
authorJulia Lawall <julia@diku.dk>
Thu, 27 May 2010 12:33:47 +0000 (14:33 +0200)
committerJames Bottomley <James.Bottomley@suse.de>
Tue, 27 Jul 2010 17:01:01 +0000 (12:01 -0500)
The end of the function is reachable both when host is and is not NULL.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
@r exists@
expression E,E1;
identifier f;
statement S1,S2,S3;
@@

if ((E == NULL && ...) || ...)
{
  ... when != if (...) S1 else S2
      when != E = E1
* E->f
  ... when any
  return ...;
}
else S3
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/hptiop.c

index 645f7cdf21abb377731690c393434b0c202c1507..0729f150b33aa038aa690f3122ae03dbd9115a5b 100644 (file)
@@ -1157,7 +1157,7 @@ free_pci_regions:
 disable_pci_device:
        pci_disable_device(pcidev);
 
-       dprintk("scsi%d: hptiop_probe fail\n", host->host_no);
+       dprintk("scsi%d: hptiop_probe fail\n", host ? host->host_no : 0);
        return -ENODEV;
 }