aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorAlan Stern <stern@rowland.harvard.edu>2010-03-18 15:41:22 -0400
committerJames Bottomley <James.Bottomley@suse.de>2010-04-11 10:24:15 -0400
commit12fb8c1574d7d0c262d2f4c667047889c4f27ebe (patch)
tree32214bc5e70a401f8dab59b3d95dca790bb30424 /drivers/scsi
parent1821438a9b6a8454281ec2e151014709f641d2d5 (diff)
[SCSI] don't kfree an initialized struct device
This patch (as1359) fixes a bug in scsi_alloc_target(). After a device structure has been initialized (and especially after its name has been set), it must not be freed directly. One has to call put_device() instead. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/scsi_scan.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
index 38518b088073..c992ecf4e372 100644
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -459,8 +459,7 @@ static struct scsi_target *scsi_alloc_target(struct device *parent,
459 found_target->reap_ref++; 459 found_target->reap_ref++;
460 spin_unlock_irqrestore(shost->host_lock, flags); 460 spin_unlock_irqrestore(shost->host_lock, flags);
461 if (found_target->state != STARGET_DEL) { 461 if (found_target->state != STARGET_DEL) {
462 put_device(parent); 462 put_device(dev);
463 kfree(starget);
464 return found_target; 463 return found_target;
465 } 464 }
466 /* Unfortunately, we found a dying target; need to 465 /* Unfortunately, we found a dying target; need to