[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: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Родитель
b30973f877
Коммит
a120586873
|
@ -156,10 +156,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);
|
||||
|
|
|
@ -394,8 +394,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);
|
||||
|
|
|
@ -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 (unlikely(!__pdata))
|
||||
return;
|
||||
__percpu_depopulate_mask(__pdata, &cpu_possible_map);
|
||||
kfree(__percpu_disguise(__pdata));
|
||||
}
|
||||
|
|
|
@ -720,10 +720,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;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче