From: Stratos Psomadakis Date: Sun, 4 Dec 2011 00:23:54 +0000 (+0200) Subject: sym53c8xx: Fix NULL pointer dereference in slave_destroy X-Git-Tag: v2.6.27.60~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=64494d9f150b905efc2a9112e1cb3777f7fcabba;p=thirdparty%2Fkernel%2Fstable.git sym53c8xx: Fix NULL pointer dereference in slave_destroy commit cced5041ed5a2d1352186510944b0ddfbdbe4c0b upstream. sym53c8xx_slave_destroy unconditionally assumes that sym53c8xx_slave_alloc has succesesfully allocated a sym_lcb. This can lead to a NULL pointer dereference (exposed by commit 4e6c82b). Signed-off-by: Stratos Psomadakis Signed-off-by: James Bottomley Signed-off-by: Greg Kroah-Hartman Signed-off-by: Willy Tarreau --- diff --git a/drivers/scsi/sym53c8xx_2/sym_glue.c b/drivers/scsi/sym53c8xx_2/sym_glue.c index d39107b7669bf..8dfc3853fd493 100644 --- a/drivers/scsi/sym53c8xx_2/sym_glue.c +++ b/drivers/scsi/sym53c8xx_2/sym_glue.c @@ -821,6 +821,10 @@ static void sym53c8xx_slave_destroy(struct scsi_device *sdev) struct sym_hcb *np = sym_get_hcb(sdev->host); struct sym_lcb *lp = sym_lp(&np->target[sdev->id], sdev->lun); + /* if slave_alloc returned before allocating a sym_lcb, return */ + if (!lp) + return; + if (lp->itlq_tbl) sym_mfree_dma(lp->itlq_tbl, SYM_CONF_MAX_TASK * 4, "ITLQ_TBL"); kfree(lp->cb_tags);