aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorshin, jacob <jacob.shin@amd.com>2006-04-28 11:54:37 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-04-28 12:00:35 -0400
commit693f7d362055261882659475d2ef022e32edbff1 (patch)
treec363d0ededf3ede77f7f35130931f5fc34ca0e30
parent4de0b1ee1b630318553248c4cfc78358720a5c84 (diff)
[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,
979 * That way we could avoid the overhead of putting the objects 979 * That way we could avoid the overhead of putting the objects
980 * into the free lists and getting them back later. 980 * into the free lists and getting them back later.
981 */ 981 */
982 transfer_objects(rl3->shared, ac, ac->limit); 982 if (rl3->shared)
983 transfer_objects(rl3->shared, ac, ac->limit);
983 984
984 free_block(cachep, ac->entry, ac->avail, node); 985 free_block(cachep, ac->entry, ac->avail, node);
985 ac->avail = 0; 986 ac->avail = 0;