lkml.org 
[lkml]   [2024]   [Feb]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH v3 08/35] mm: prevent slabobj_ext allocations for slabobj_ext and kmem_cache objects
    From
    On 2/12/24 22:38, Suren Baghdasaryan wrote:
    > Use __GFP_NO_OBJ_EXT to prevent recursions when allocating slabobj_ext
    > objects. Also prevent slabobj_ext allocations for kmem_cache objects.
    >
    > Signed-off-by: Suren Baghdasaryan <surenb@google.com>
    > ---
    > mm/slab.h | 6 ++++++
    > mm/slab_common.c | 2 ++
    > 2 files changed, 8 insertions(+)
    >
    > diff --git a/mm/slab.h b/mm/slab.h
    > index 436a126486b5..f4ff635091e4 100644
    > --- a/mm/slab.h
    > +++ b/mm/slab.h
    > @@ -589,6 +589,12 @@ prepare_slab_obj_exts_hook(struct kmem_cache *s, gfp_t flags, void *p)
    > if (!need_slab_obj_ext())
    > return NULL;
    >
    > + if (s->flags & SLAB_NO_OBJ_EXT)
    > + return NULL;
    > +
    > + if (flags & __GFP_NO_OBJ_EXT)
    > + return NULL;

    Since we agreed to postpone this function, when it appears later it can have
    those in.

    > slab = virt_to_slab(p);
    > if (!slab_obj_exts(slab) &&
    > WARN(alloc_slab_obj_exts(slab, s, flags, false),
    > diff --git a/mm/slab_common.c b/mm/slab_common.c
    > index 6bfa1810da5e..83fec2dd2e2d 100644
    > --- a/mm/slab_common.c
    > +++ b/mm/slab_common.c
    > @@ -218,6 +218,8 @@ int alloc_slab_obj_exts(struct slab *slab, struct kmem_cache *s,
    > void *vec;
    >
    > gfp &= ~OBJCGS_CLEAR_MASK;
    > + /* Prevent recursive extension vector allocation */
    > + gfp |= __GFP_NO_OBJ_EXT;

    And this could become part of 6/35 mm: introduce __GFP_NO_OBJ_EXT ... ?

    > vec = kcalloc_node(objects, sizeof(struct slabobj_ext), gfp,
    > slab_nid(slab));
    > if (!vec)


    \
     
     \ /
      Last update: 2024-05-27 15:05    [W:5.382 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site