From: Brian King Date: Mon, 12 Dec 2005 19:05:08 +0000 (-0600) Subject: [PATCH] Fix SCSI scanning slab corruption X-Git-Tag: v2.6.15-rc6~106 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=66e05225262cd9271fac13fe2fd1e9edb65e3978;p=linux-2.6 [PATCH] Fix SCSI scanning slab corruption There is a double free in the scsi scan code if a LLDD's slave_alloc() call fails. There is a direct call to scsi_free_queue and then the following put_device calls the release function, which also frees the queue. Remove the redundant scsi_free_queue. Signed-off-by: Brian King Tested-by: Nathan Lynch [ Also removed some strange whitespace artifacts in that area ] Signed-off-by: Linus Torvalds --- diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c index 374853df9c..94e5167f26 100644 --- a/drivers/scsi/scsi_scan.c +++ b/drivers/scsi/scsi_scan.c @@ -266,8 +266,6 @@ static struct scsi_device *scsi_alloc_sdev(struct scsi_target *starget, /* * if LLDD reports slave not present, don't clutter * console with alloc failure messages - - */ if (ret == -ENXIO) display_failure_msg = 0; @@ -279,7 +277,6 @@ static struct scsi_device *scsi_alloc_sdev(struct scsi_target *starget, out_device_destroy: transport_destroy_device(&sdev->sdev_gendev); - scsi_free_queue(sdev->request_queue); put_device(&sdev->sdev_gendev); out: if (display_failure_msg)