summary refs log tree commit diff
path: root/drivers/scsi/sym53c8xx_2
diff options
context:
space:
mode:
authorStratos Psomadakis <psomas@gentoo.org>2011-12-04 02:23:54 +0200
committerJames Bottomley <JBottomley@Parallels.com>2012-01-10 17:01:18 -0600
commitcced5041ed5a2d1352186510944b0ddfbdbe4c0b (patch)
tree8c104162d1e5b6ecfad4f560342aa043bce6c30d /drivers/scsi/sym53c8xx_2
parent9fc397fc0878c9540af20cbffc4d546541fe8b23 (diff)
downloadlinux-cced5041ed5a2d1352186510944b0ddfbdbe4c0b.tar.gz
[SCSI] sym53c8xx: Fix NULL pointer dereference in slave_destroy
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 <psomas@gentoo.org>
Cc: stable@vger.kernel.org
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/sym53c8xx_2')
-rw-r--r--drivers/scsi/sym53c8xx_2/sym_glue.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/scsi/sym53c8xx_2/sym_glue.c b/drivers/scsi/sym53c8xx_2/sym_glue.c
index b4543f575f46..36d1ed7817eb 100644
--- a/drivers/scsi/sym53c8xx_2/sym_glue.c
+++ b/drivers/scsi/sym53c8xx_2/sym_glue.c
@@ -839,6 +839,10 @@ static void sym53c8xx_slave_destroy(struct scsi_device *sdev)
 	struct sym_lcb *lp = sym_lp(tp, sdev->lun);
 	unsigned long flags;
 
+	/* if slave_alloc returned before allocating a sym_lcb, return */
+	if (!lp)
+		return;
+
 	spin_lock_irqsave(np->s.host->host_lock, flags);
 
 	if (lp->busy_itlq || lp->busy_itl) {