Re: [RFC PATCH V3 7/7] mm/slab: place slabobj_ext metadata in unused space within s->size
From: Andrey Ryabinin
Date: Wed Oct 29 2025 - 14:19:40 EST
On 10/27/25 1:28 PM, Harry Yoo wrote:
> slab->obj_exts |= MEMCG_DATA_OBJEXTS;
> slab_set_stride(slab, sizeof(struct slabobj_ext));
> + } else if (obj_exts_in_object(s)) {
> + unsigned int offset = obj_exts_offset_in_object(s);
> +
> + slab->obj_exts = (unsigned long)slab_address(slab);
> + slab->obj_exts += s->red_left_pad;
> + slab->obj_exts += obj_exts_offset_in_object(s);
> + if (IS_ENABLED(CONFIG_MEMCG))
> + slab->obj_exts |= MEMCG_DATA_OBJEXTS;
> + slab_set_stride(slab, s->size);
> +
> + for_each_object(addr, s, slab_address(slab), slab->objects) {
> + kasan_unpoison_range(addr + offset,
> + sizeof(struct slabobj_ext));
Is this leftover from previous version? Otherwise I don't get why we unpoison this.
> + memset(addr + offset, 0, sizeof(struct slabobj_ext));
> + }
> }
> metadata_access_disable();
> }