diff --git a/mm/slub.c b/mm/slub.c index 2deae75891a2..e92597691449 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -940,7 +940,9 @@ unsigned long get_each_kmemcache_object(struct kmem_cache *s, spin_lock_irqsave(&n->list_lock, flags); list_for_each_entry(slab, &n->partial, slab_list) { for_each_object(p, s, slab_address(slab), slab->objects) { + metadata_access_enable(); ret = fn(s, p, private); + metadata_access_disable(); if (ret) { spin_unlock_irqrestore(&n->list_lock, flags); return ret; @@ -950,7 +952,9 @@ unsigned long get_each_kmemcache_object(struct kmem_cache *s, #ifdef CONFIG_SLUB_DEBUG list_for_each_entry(slab, &n->full, slab_list) { for_each_object(p, s, slab_address(slab), slab->objects) { + metadata_access_enable(); ret = fn(s, p, private); + metadata_access_disable(); if (ret) { spin_unlock_irqrestore(&n->list_lock, flags); return ret;