Commit a1205868 authored by Alan Stern's avatar Alan Stern Committed by Linus Torvalds
Browse files

[PATCH] Allow NULL pointers in percpu_free



The patch (as824b) 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: default avatarAlan Stern <stern@rowland.harvard.edu>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent b30973f8
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -156,11 +156,9 @@ 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;
}
}

arch_initcall(ffh_cstate_init);
__exitcall(ffh_cstate_exit);
+1 −2
Original line number Diff line number Diff line
@@ -394,7 +394,6 @@ static int blk_trace_setup(request_queue_t *q, struct block_device *bdev,
	if (bt) {
		if (bt->dropped_file)
			debugfs_remove(bt->dropped_file);
		if (bt->sequence)
		free_percpu(bt->sequence);
		if (bt->rchan)
			relay_close(bt->rchan);
+5 −4
Original line number Diff line number Diff line
@@ -17,11 +17,10 @@
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;
}
}
EXPORT_SYMBOL_GPL(percpu_depopulate);

/**
@@ -123,6 +122,8 @@ EXPORT_SYMBOL_GPL(__percpu_alloc_mask);
 */
void percpu_free(void *__pdata)
{
	if (unlikely(!__pdata))
		return;
	__percpu_depopulate_mask(__pdata, &cpu_possible_map);
	kfree(__percpu_disguise(__pdata));
}
+2 −4
Original line number Diff line number Diff line
@@ -720,9 +720,7 @@ snmp6_mib_free(void *ptr[2])
{
	if (ptr == NULL)
		return;
	if (ptr[0])
	free_percpu(ptr[0]);
	if (ptr[1])
	free_percpu(ptr[1]);
	ptr[0] = ptr[1] = NULL;
}