public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Allow NULL pointers in percpu_free
@ 2006-11-17 17:36 Alan Stern
  2006-11-17 17:47 ` Daniel Walker
  0 siblings, 1 reply; 5+ messages in thread
From: Alan Stern @ 2006-11-17 17:36 UTC (permalink / raw)
  To: Andrew Morton, Venkatesh Pallipadi, Jens Axboe, Christoph Lameter,
	Pedro Roque, David S. Miller
  Cc: Paul E. McKenney, Kernel development list

The patch (as824) makes percpu_free() ignore NULL arguments, as one
would expect for a deallocation routine.  (Note that free_percpu is
#defined as percpu_free in include/linux/percpu.h.)  A few callers are
updated to remove now-unneeded tests for NULL.  A few other callers
already seem to assume that passing a NULL pointer to percpu_free() is
okay!

The patch also removes an unnecessary NULL check in percpu_depopulate().

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>

---

Index: usb-2.6/arch/i386/kernel/acpi/cstate.c
===================================================================
--- usb-2.6.orig/arch/i386/kernel/acpi/cstate.c
+++ usb-2.6/arch/i386/kernel/acpi/cstate.c
@@ -155,10 +155,8 @@ static int __init ffh_cstate_init(void)
 
 static void __exit ffh_cstate_exit(void)
 {
-	if (cpu_cstate_entry) {
-		free_percpu(cpu_cstate_entry);
-		cpu_cstate_entry = NULL;
-	}
+	free_percpu(cpu_cstate_entry);
+	cpu_cstate_entry = NULL;
 }
 
 arch_initcall(ffh_cstate_init);
Index: usb-2.6/block/blktrace.c
===================================================================
--- usb-2.6.orig/block/blktrace.c
+++ usb-2.6/block/blktrace.c
@@ -366,8 +366,7 @@ err:
 	if (bt) {
 		if (bt->dropped_file)
 			debugfs_remove(bt->dropped_file);
-		if (bt->sequence)
-			free_percpu(bt->sequence);
+		free_percpu(bt->sequence);
 		if (bt->rchan)
 			relay_close(bt->rchan);
 		kfree(bt);
Index: usb-2.6/mm/allocpercpu.c
===================================================================
--- usb-2.6.orig/mm/allocpercpu.c
+++ usb-2.6/mm/allocpercpu.c
@@ -17,10 +17,9 @@
 void percpu_depopulate(void *__pdata, int cpu)
 {
 	struct percpu_data *pdata = __percpu_disguise(__pdata);
-	if (pdata->ptrs[cpu]) {
-		kfree(pdata->ptrs[cpu]);
-		pdata->ptrs[cpu] = NULL;
-	}
+
+	kfree(pdata->ptrs[cpu]);
+	pdata->ptrs[cpu] = NULL;
 }
 EXPORT_SYMBOL_GPL(percpu_depopulate);
 
@@ -123,6 +122,8 @@ EXPORT_SYMBOL_GPL(__percpu_alloc_mask);
  */
 void percpu_free(void *__pdata)
 {
+	if (!__pdata)
+		return;
 	__percpu_depopulate_mask(__pdata, &cpu_possible_map);
 	kfree(__percpu_disguise(__pdata));
 }
Index: usb-2.6/net/ipv6/af_inet6.c
===================================================================
--- usb-2.6.orig/net/ipv6/af_inet6.c
+++ usb-2.6/net/ipv6/af_inet6.c
@@ -719,10 +719,8 @@ snmp6_mib_free(void *ptr[2])
 {
 	if (ptr == NULL)
 		return;
-	if (ptr[0])
-		free_percpu(ptr[0]);
-	if (ptr[1])
-		free_percpu(ptr[1]);
+	free_percpu(ptr[0]);
+	free_percpu(ptr[1]);
 	ptr[0] = ptr[1] = NULL;
 }
 


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

end of thread, other threads:[~2006-11-17 19:35 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-11-17 17:36 [PATCH] Allow NULL pointers in percpu_free Alan Stern
2006-11-17 17:47 ` Daniel Walker
2006-11-17 18:07   ` Alan Stern
2006-11-17 18:14     ` Daniel Walker
2006-11-17 19:35       ` Alan Stern

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