Thread (208 messages) 208 messages, 21 authors, 2024-02-29

Re: [PATCH v3 08/35] mm: prevent slabobj_ext allocations for slabobj_ext and kmem_cache objects

From: Suren Baghdasaryan <surenb@google.com>
Date: 2024-02-15 22:13:29
Also in: cgroups, linux-arch, linux-doc, linux-fsdevel, linux-iommu, linux-mm, lkml

On Thu, Feb 15, 2024 at 1:44 PM Vlastimil Babka [off-list ref] wrote:
On 2/12/24 22:38, Suren Baghdasaryan wrote:
quoted
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.
Yes, I think that works. Will have this in the same patch.
quoted
      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 ... ?
Yes, that will eliminate this patch. Thanks!
quoted
      vec = kcalloc_node(objects, sizeof(struct slabobj_ext), gfp,
                         slab_nid(slab));
      if (!vec)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help