All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] sg: fix memory leaks
@ 2013-09-26 17:54 Douglas Gilbert
  0 siblings, 0 replies; only message in thread
From: Douglas Gilbert @ 2013-09-26 17:54 UTC (permalink / raw)
  To: SCSI development list; +Cc: James Bottomley, Vegard Nossum, vaughan

[-- Attachment #1: Type: text/plain, Size: 420 bytes --]

This patch plugs two memory leaks in the sg driver. The
first was reported by Vegard Nossum and the second was
found by checking for the same pattern.

ChangeLog:
    - close two heap memory leaks. The first is an error
      path; the second is associated with getting debug
      information from procfs and sysfs.

The patch is generated from lk 3.12.0-rc2 .


Signed-off-by: Douglas Gilbert <dgilbert@interlog.com>


[-- Attachment #2: sg_leaks312rc2.patch --]
[-- Type: text/x-patch, Size: 647 bytes --]

diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
index 5cbc4bb..aa86276 100644
--- a/drivers/scsi/sg.c
+++ b/drivers/scsi/sg.c
@@ -2060,6 +2060,7 @@ sg_add_sfp(Sg_device * sdp, int dev)
 	spin_lock_irqsave(&sdp->sfd_lock, iflags);
 	if (sdp->detached) {
 		spin_unlock_irqrestore(&sdp->sfd_lock, iflags);
+		kfree(sfp);
 		return ERR_PTR(-ENODEV);
 	}
 	list_add_tail(&sfp->sfd_siblings, &sdp->sfds);
@@ -2433,8 +2434,10 @@ static void * dev_seq_start(struct seq_file *s, loff_t *pos)
 
 	it->index = *pos;
 	it->max = sg_last_dev();
-	if (it->index >= it->max)
+	if (it->index >= it->max) {
+		kfree(it);
 		return NULL;
+	}
 	return it;
 }
 


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2013-09-26 17:54 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-09-26 17:54 [PATCH] sg: fix memory leaks Douglas Gilbert

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.