diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2006-12-06 23:32:37 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-07 11:39:22 -0500 |
commit | a120586873d3d64de93bd6d593d237e131994e58 (patch) | |
tree | ae284884e23268e867f748a2ab52353cf2390e89 /mm/allocpercpu.c | |
parent | b30973f877fea1a3fb84e05599890fcc082a88e5 (diff) |
[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>
Diffstat (limited to 'mm/allocpercpu.c')
-rw-r--r-- | mm/allocpercpu.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/mm/allocpercpu.c b/mm/allocpercpu.c index eaa9abeea536..b2486cf887a0 100644 --- a/mm/allocpercpu.c +++ b/mm/allocpercpu.c | |||
@@ -17,10 +17,9 @@ | |||
17 | void percpu_depopulate(void *__pdata, int cpu) | 17 | void percpu_depopulate(void *__pdata, int cpu) |
18 | { | 18 | { |
19 | struct percpu_data *pdata = __percpu_disguise(__pdata); | 19 | struct percpu_data *pdata = __percpu_disguise(__pdata); |
20 | if (pdata->ptrs[cpu]) { | 20 | |
21 | kfree(pdata->ptrs[cpu]); | 21 | kfree(pdata->ptrs[cpu]); |
22 | pdata->ptrs[cpu] = NULL; | 22 | pdata->ptrs[cpu] = NULL; |
23 | } | ||
24 | } | 23 | } |
25 | EXPORT_SYMBOL_GPL(percpu_depopulate); | 24 | EXPORT_SYMBOL_GPL(percpu_depopulate); |
26 | 25 | ||
@@ -123,6 +122,8 @@ EXPORT_SYMBOL_GPL(__percpu_alloc_mask); | |||
123 | */ | 122 | */ |
124 | void percpu_free(void *__pdata) | 123 | void percpu_free(void *__pdata) |
125 | { | 124 | { |
125 | if (unlikely(!__pdata)) | ||
126 | return; | ||
126 | __percpu_depopulate_mask(__pdata, &cpu_possible_map); | 127 | __percpu_depopulate_mask(__pdata, &cpu_possible_map); |
127 | kfree(__percpu_disguise(__pdata)); | 128 | kfree(__percpu_disguise(__pdata)); |
128 | } | 129 | } |