Message ID | 20220712022807.44113-3-rongwei.wang@linux.alibaba.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [v2,1/3] mm/slub: fix the race between validate_slab and slab_free | expand |
diff --git a/mm/slub.c b/mm/slub.c index 587416e39292..cdac004f232f 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -5059,11 +5059,6 @@ static int validate_slab_node(struct kmem_cache *s, validate_slab(s, slab, obj_map); count++; } - if (count != atomic_long_read(&n->nr_slabs)) { - pr_err("SLUB: %s %ld slabs counted but counter=%ld\n", - s->name, count, atomic_long_read(&n->nr_slabs)); - slab_add_kunit_errors(); - } out: spin_unlock_irqrestore(&n->list_lock, flags);
The n->nr_slabs will be updated when really to allocate or free a slab, but this slab is unnecessarily in full list or partial list of one node. That means the total count of slab in node's full and partial list is unnecessarily equal to n->nr_slabs, even though flush_all() has been called. An example here, an error message likes below will be printed when 'slabinfo -v' is executed: SLUB: kmemleak_object 4157 slabs counted but counter=4161 SLUB: kmemleak_object 4072 slabs counted but counter=4077 SLUB: kmalloc-2k 19 slabs counted but counter=20 SLUB: kmalloc-2k 12 slabs counted but counter=13 SLUB: kmemleak_object 4205 slabs counted but counter=4209 Here, deleting this pr_err() directly. Signed-off-by: Rongwei Wang <rongwei.wang@linux.alibaba.com> --- mm/slub.c | 5 ----- 1 file changed, 5 deletions(-)