From: Colin Ian King Date: Thu, 31 May 2018 12:31:17 +0000 (+0100) Subject: scsi: aic7xxx: aic79xx: fix potential null pointer dereference on ahd X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=e73c864ba3b57cc3c5cc6b328b9da1b48637a6df;p=linux.git scsi: aic7xxx: aic79xx: fix potential null pointer dereference on ahd 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 Signed-off-by: Martin K. Petersen --- diff --git a/drivers/scsi/aic7xxx/aic79xx_core.c b/drivers/scsi/aic7xxx/aic79xx_core.c index 034f4eebb1603..3efd4cdc40a04 100644 --- a/drivers/scsi/aic7xxx/aic79xx_core.c +++ b/drivers/scsi/aic7xxx/aic79xx_core.c @@ -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); }