public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCH] Fix kfree usage in various mtd map remove functions
@ 2007-05-17 18:18 Phil Endecott
  2007-05-21 15:44 ` MikeW
  2007-05-21 15:53 ` MikeW
  0 siblings, 2 replies; 5+ messages in thread
From: Phil Endecott @ 2007-05-17 18:18 UTC (permalink / raw)
  To: linux-mtd

The remove() functions in various mtd map drivers were incorrectly kfree()ing the struct 
resource that they had passed to release_resource(), and/or failing to free the *_flash_info 
structure.  This looks like a typo which has gradually propogated by copy&paste into a number 
of these drivers.

Since mtd drivers are rarely or never used as modules (they typically provide root filesystems) 
it is unlikely that these code paths have ever been exercised.  It also means that this patch 
has not been tested by the author.

This patch is against 2.6.21.

Signed-off-by: Phil Endecott <spam_from_linux_mtd_patch@chezphil.org>


diff -Nur linux-arm-2.6.21/drivers/mtd/maps.orig/integrator-flash.c linux-arm-2.6.21/drivers/mtd/maps/integrator-flash.c
--- linux-arm-2.6.21/drivers/mtd/maps.orig/integrator-flash.c	2007-05-17 18:56:10.000000000 +0100
+++ linux-arm-2.6.21/drivers/mtd/maps/integrator-flash.c	2007-05-17 18:58:16.000000000 +0100
@@ -174,7 +174,6 @@
 
 		iounmap(info->map.virt);
 		release_resource(info->res);
-		kfree(info->res);
 
 		if (info->plat && info->plat->exit)
 			info->plat->exit();
diff -Nur linux-arm-2.6.21/drivers/mtd/maps.orig/ixp2000.c linux-arm-2.6.21/drivers/mtd/maps/ixp2000.c
--- linux-arm-2.6.21/drivers/mtd/maps.orig/ixp2000.c	2007-05-17 18:56:10.000000000 +0100
+++ linux-arm-2.6.21/drivers/mtd/maps/ixp2000.c	2007-05-17 18:57:29.000000000 +0100
@@ -129,10 +129,10 @@
 
 	kfree(info->partitions);
 
-	if (info->res) {
+	if (info->res)
 		release_resource(info->res);
-		kfree(info->res);
-	}
+
+	kfree(info);
 
 	if (plat->exit)
 		plat->exit();
diff -Nur linux-arm-2.6.21/drivers/mtd/maps.orig/ixp4xx.c linux-arm-2.6.21/drivers/mtd/maps/ixp4xx.c
--- linux-arm-2.6.21/drivers/mtd/maps.orig/ixp4xx.c	2007-05-17 18:56:10.000000000 +0100
+++ linux-arm-2.6.21/drivers/mtd/maps/ixp4xx.c	2007-05-17 18:57:02.000000000 +0100
@@ -172,10 +172,10 @@
 
 	kfree(info->partitions);
 
-	if (info->res) {
+	if (info->res)
 		release_resource(info->res);
-		kfree(info->res);
-	}
+
+	kfree(info);
 
 	if (plat->exit)
 		plat->exit();
Binary files linux-arm-2.6.21/drivers/mtd/maps.orig/ixp4xx.o and linux-arm-2.6.21/drivers/mtd/maps/ixp4xx.o differ
diff -Nur linux-arm-2.6.21/drivers/mtd/maps.orig/physmap.c linux-arm-2.6.21/drivers/mtd/maps/physmap.c
--- linux-arm-2.6.21/drivers/mtd/maps.orig/physmap.c	2007-05-17 18:56:10.000000000 +0100
+++ linux-arm-2.6.21/drivers/mtd/maps/physmap.c	2007-05-17 18:59:20.000000000 +0100
@@ -64,10 +64,10 @@
 	if (info->map.virt != NULL)
 		iounmap(info->map.virt);
 
-	if (info->res != NULL) {
+	if (info->res)
 		release_resource(info->res);
-		kfree(info->res);
-	}
+
+	kfree(info);
 
 	return 0;
 }
diff -Nur linux-arm-2.6.21/drivers/mtd/maps.orig/physmap_of.c linux-arm-2.6.21/drivers/mtd/maps/physmap_of.c
--- linux-arm-2.6.21/drivers/mtd/maps.orig/physmap_of.c	2007-05-17 18:56:10.000000000 +0100
+++ linux-arm-2.6.21/drivers/mtd/maps/physmap_of.c	2007-05-17 18:59:57.000000000 +0100
@@ -107,10 +107,10 @@
 	if (info->map.virt != NULL)
 		iounmap(info->map.virt);
 
-	if (info->res != NULL) {
+	if (info->res)
 		release_resource(info->res);
-		kfree(info->res);
-	}
+
+	kfree(info);
 
 	return 0;
 }

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2007-05-23  8:01 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-05-17 18:18 [PATCH] Fix kfree usage in various mtd map remove functions Phil Endecott
2007-05-21 15:44 ` MikeW
2007-05-21 17:09   ` Phil Endecott
2007-05-23  8:01     ` MikeW
2007-05-21 15:53 ` MikeW

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox