|
@@ -2028,9 +2028,17 @@ static void flush_cpu_slab(void *d)
|
|
|
__flush_cpu_slab(s, smp_processor_id());
|
|
|
}
|
|
|
|
|
|
+static bool has_cpu_slab(int cpu, void *info)
|
|
|
+{
|
|
|
+ struct kmem_cache *s = info;
|
|
|
+ struct kmem_cache_cpu *c = per_cpu_ptr(s->cpu_slab, cpu);
|
|
|
+
|
|
|
+ return !!(c->page);
|
|
|
+}
|
|
|
+
|
|
|
static void flush_all(struct kmem_cache *s)
|
|
|
{
|
|
|
- on_each_cpu(flush_cpu_slab, s, 1);
|
|
|
+ on_each_cpu_cond(has_cpu_slab, flush_cpu_slab, s, 1, GFP_ATOMIC);
|
|
|
}
|
|
|
|
|
|
/*
|