diff options
author | shin, jacob <jacob.shin@amd.com> | 2006-04-28 10:54:37 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-04-28 09:00:35 -0700 |
commit | 693f7d362055261882659475d2ef022e32edbff1 (patch) | |
tree | c363d0ededf3ede77f7f35130931f5fc34ca0e30 | |
parent | 4de0b1ee1b630318553248c4cfc78358720a5c84 (diff) | |
download | linux-3.10-693f7d362055261882659475d2ef022e32edbff1.tar.gz linux-3.10-693f7d362055261882659475d2ef022e32edbff1.tar.bz2 linux-3.10-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.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/mm/slab.c b/mm/slab.c index af5c5237e11..c32af7e7581 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; |