summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorshin, jacob <jacob.shin@amd.com>2006-04-28 17:54:37 +0200
committerLinus Torvalds <torvalds@g5.osdl.org>2006-04-28 18:00:35 +0200
commit693f7d362055261882659475d2ef022e32edbff1 (patch)
treec363d0ededf3ede77f7f35130931f5fc34ca0e30
parent[PATCH] asiliantfb: Add help text in Kconfig (diff)
downloadlinux-693f7d362055261882659475d2ef022e32edbff1.tar.xz
linux-693f7d362055261882659475d2ef022e32edbff1.zip
[PATCH] slab: fix crash on __drain_alien_cahce() during CPU Hotplug
transfer_objects should only be called when all of the cpus in the node are online. CPU_DEAD notifier callback marks l3->shared to NULL. Signed-off-by: Jacob Shin <jacob.shin@amd.com> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--mm/slab.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/mm/slab.c b/mm/slab.c
index af5c5237e11a..c32af7e7581e 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -979,7 +979,8 @@ static void __drain_alien_cache(struct kmem_cache *cachep,
* That way we could avoid the overhead of putting the objects
* into the free lists and getting them back later.
*/
- transfer_objects(rl3->shared, ac, ac->limit);
+ if (rl3->shared)
+ transfer_objects(rl3->shared, ac, ac->limit);
free_block(cachep, ac->entry, ac->avail, node);
ac->avail = 0;