]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
scsi: aic7xxx: aic79xx: fix potential null pointer dereference on ahd
authorColin Ian King <colin.king@canonical.com>
Thu, 31 May 2018 12:31:17 +0000 (13:31 +0100)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 8 Jun 2018 01:50:00 +0000 (21:50 -0400)
If AHD_DEBUG is enabled and ahd_platform_alloc fails then ahd is set to
null and the debug printk dereferences ahd when passing it to ahd_name.
Fix this by moving the debug printk to before the call to
ahd_platform_alloc where ahd is not null at that point.

Detected by CoverityScan, CID#100296 ("Explicit null dereference")

Signed-off-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/aic7xxx/aic79xx_core.c

index 034f4eebb1603f6271c929e51a304660fae6ac30..3efd4cdc40a04f5be85bec5d233023054289271b 100644 (file)
@@ -6112,10 +6112,6 @@ ahd_alloc(void *platform_arg, char *name)
        ahd->int_coalescing_stop_threshold =
            AHD_INT_COALESCING_STOP_THRESHOLD_DEFAULT;
 
-       if (ahd_platform_alloc(ahd, platform_arg) != 0) {
-               ahd_free(ahd);
-               ahd = NULL;
-       }
 #ifdef AHD_DEBUG
        if ((ahd_debug & AHD_SHOW_MEMORY) != 0) {
                printk("%s: scb size = 0x%x, hscb size = 0x%x\n",
@@ -6123,6 +6119,10 @@ ahd_alloc(void *platform_arg, char *name)
                       (u_int)sizeof(struct hardware_scb));
        }
 #endif
+       if (ahd_platform_alloc(ahd, platform_arg) != 0) {
+               ahd_free(ahd);
+               ahd = NULL;
+       }
        return (ahd);
 }