|
@@ -1186,8 +1186,10 @@ static int __cpuinit cpuup_callback(struct notifier_block *nfb,
|
|
|
int memsize = sizeof(struct kmem_list3);
|
|
|
|
|
|
switch (action) {
|
|
|
- case CPU_UP_PREPARE:
|
|
|
+ case CPU_LOCK_ACQUIRE:
|
|
|
mutex_lock(&cache_chain_mutex);
|
|
|
+ break;
|
|
|
+ case CPU_UP_PREPARE:
|
|
|
/*
|
|
|
* We need to do this right in the beginning since
|
|
|
* alloc_arraycache's are going to use this list.
|
|
@@ -1274,16 +1276,9 @@ static int __cpuinit cpuup_callback(struct notifier_block *nfb,
|
|
|
}
|
|
|
break;
|
|
|
case CPU_ONLINE:
|
|
|
- mutex_unlock(&cache_chain_mutex);
|
|
|
start_cpu_timer(cpu);
|
|
|
break;
|
|
|
#ifdef CONFIG_HOTPLUG_CPU
|
|
|
- case CPU_DOWN_PREPARE:
|
|
|
- mutex_lock(&cache_chain_mutex);
|
|
|
- break;
|
|
|
- case CPU_DOWN_FAILED:
|
|
|
- mutex_unlock(&cache_chain_mutex);
|
|
|
- break;
|
|
|
case CPU_DEAD:
|
|
|
/*
|
|
|
* Even if all the cpus of a node are down, we don't free the
|
|
@@ -1354,6 +1349,8 @@ free_array_cache:
|
|
|
continue;
|
|
|
drain_freelist(cachep, l3, l3->free_objects);
|
|
|
}
|
|
|
+ break;
|
|
|
+ case CPU_LOCK_RELEASE:
|
|
|
mutex_unlock(&cache_chain_mutex);
|
|
|
break;
|
|
|
}
|