]> git.dujemihanovic.xyz Git - linux.git/commitdiff
Merge tag 'slab-for-6.5' of git://git.kernel.org/pub/scm/linux/kernel/git/vbabka...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 29 Jun 2023 23:34:12 +0000 (16:34 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 29 Jun 2023 23:34:12 +0000 (16:34 -0700)
Pull slab updates from Vlastimil Babka:

 - SLAB deprecation:

   Following the discussion at LSF/MM 2023 [1] and no objections, the
   SLAB allocator is deprecated by renaming the config option (to make
   its users notice) to CONFIG_SLAB_DEPRECATED with updated help text.
   SLUB should be used instead. Existing defconfigs with CONFIG_SLAB are
   also updated.

 - SLAB_NO_MERGE kmem_cache flag (Jesper Dangaard Brouer):

   There are (very limited) cases where kmem_cache merging is
   undesirable, and existing ways to prevent it are hacky. Introduce a
   new flag to do that cleanly and convert the existing hacky users.
   Btrfs plans to use this for debug kernel builds (that use case is
   always fine), networking for performance reasons (that should be very
   rare).

 - Replace the usage of weak PRNGs (David Keisar Schmidt):

   In addition to using stronger RNGs for the security related features,
   the code is a bit cleaner.

 - Misc code cleanups (SeongJae Parki, Xiongwei Song, Zhen Lei, and
   zhaoxinchao)

Link: https://lwn.net/Articles/932201/
* tag 'slab-for-6.5' of git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab:
  mm/slab_common: use SLAB_NO_MERGE instead of negative refcount
  mm/slab: break up RCU readers on SLAB_TYPESAFE_BY_RCU example code
  mm/slab: add a missing semicolon on SLAB_TYPESAFE_BY_RCU example code
  mm/slab_common: reduce an if statement in create_cache()
  mm/slab: introduce kmem_cache flag SLAB_NO_MERGE
  mm/slab: rename CONFIG_SLAB to CONFIG_SLAB_DEPRECATED
  mm/slab: remove HAVE_HARDENED_USERCOPY_ALLOCATOR
  mm/slab_common: Replace invocation of weak PRNG
  mm/slab: Replace invocation of weak PRNG
  slub: Don't read nr_slabs and total_objects directly
  slub: Remove slabs_node() function
  slub: Remove CONFIG_SMP defined check
  slub: Put objects_show() into CONFIG_SLUB_DEBUG enabled block
  slub: Correct the error code when slab_kset is NULL
  mm/slab: correct return values in comment for _kmem_cache_create()

20 files changed:
1  2 
arch/arm/configs/shmobile_defconfig
arch/m68k/configs/amiga_defconfig
arch/m68k/configs/apollo_defconfig
arch/m68k/configs/atari_defconfig
arch/m68k/configs/bvme6000_defconfig
arch/m68k/configs/hp300_defconfig
arch/m68k/configs/mac_defconfig
arch/m68k/configs/multi_defconfig
arch/m68k/configs/mvme147_defconfig
arch/m68k/configs/mvme16x_defconfig
arch/m68k/configs/q40_defconfig
arch/m68k/configs/sun3_defconfig
arch/m68k/configs/sun3x_defconfig
arch/mips/configs/ci20_defconfig
include/linux/slab.h
mm/Kconfig
mm/slab.c
mm/slab.h
mm/slab_common.c
mm/slub.c

Simple merge
index 62fdca7efce4dc9689228e1994a385a0da3abc2f,e9f364b7f74317966e51b0e308495678b3f5e453..4383ed85106335fd494b6d248f60fdc371d21e1b
@@@ -41,9 -41,7 +41,8 @@@ CONFIG_MQ_IOSCHED_KYBER=
  CONFIG_IOSCHED_BFQ=m
  # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
  CONFIG_BINFMT_MISC=m
- CONFIG_SLAB=y
  # CONFIG_COMPACTION is not set
 +CONFIG_DMAPOOL_TEST=m
  CONFIG_USERFAULTFD=y
  CONFIG_NET=y
  CONFIG_PACKET=y
index 5bfbd0444bb51f70925628abca66cad90d3001f6,fc1d2e5e35d735b4307fbc8eff96397a13b6aed4..ec0f9c9f9562147b7b87b4d866b1f7ad962d5f89
@@@ -37,9 -37,7 +37,8 @@@ CONFIG_MQ_IOSCHED_KYBER=
  CONFIG_IOSCHED_BFQ=m
  # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
  CONFIG_BINFMT_MISC=m
- CONFIG_SLAB=y
  # CONFIG_COMPACTION is not set
 +CONFIG_DMAPOOL_TEST=m
  CONFIG_USERFAULTFD=y
  CONFIG_NET=y
  CONFIG_PACKET=y
index 44302f11c9ea3d495b0c3596162d8e8186d6608c,c8d87c450804f55a94daed4491ea59b0bef18caa..8656ae1f239e94ce28e5468b5bedfe5d59ee1c21
@@@ -44,9 -44,7 +44,8 @@@ CONFIG_MQ_IOSCHED_KYBER=
  CONFIG_IOSCHED_BFQ=m
  # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
  CONFIG_BINFMT_MISC=m
- CONFIG_SLAB=y
  # CONFIG_COMPACTION is not set
 +CONFIG_DMAPOOL_TEST=m
  CONFIG_USERFAULTFD=y
  CONFIG_NET=y
  CONFIG_PACKET=y
index f3336f1774ec48b4c3cdb05db87950831da1a0e9,df174677145de8ab70d5ca60fbb964e0a3eccf6d..496fb6a415eaf7da06d6f4f59195576eed44ac7c
@@@ -34,9 -34,7 +34,8 @@@ CONFIG_MQ_IOSCHED_KYBER=
  CONFIG_IOSCHED_BFQ=m
  # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
  CONFIG_BINFMT_MISC=m
- CONFIG_SLAB=y
  # CONFIG_COMPACTION is not set
 +CONFIG_DMAPOOL_TEST=m
  CONFIG_USERFAULTFD=y
  CONFIG_NET=y
  CONFIG_PACKET=y
index 2d1bbac680662884631d47e65cbab678b1afb53f,c944c3e2697a36f05dde50642aa8309f13376788..4add7ab9973b1497e5adfff132a12dbb889c8981
@@@ -36,9 -36,7 +36,8 @@@ CONFIG_MQ_IOSCHED_KYBER=
  CONFIG_IOSCHED_BFQ=m
  # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
  CONFIG_BINFMT_MISC=m
- CONFIG_SLAB=y
  # CONFIG_COMPACTION is not set
 +CONFIG_DMAPOOL_TEST=m
  CONFIG_USERFAULTFD=y
  CONFIG_NET=y
  CONFIG_PACKET=y
index b4428dc361027632b69bb59226f2b14c91df3f75,8a3ef860d30d477aa5dc1e2ac7fd05333c734622..5845f1f71fd11cd2d7b11dc8a8a4e223e97baa83
@@@ -35,9 -35,7 +35,8 @@@ CONFIG_MQ_IOSCHED_KYBER=
  CONFIG_IOSCHED_BFQ=m
  # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
  CONFIG_BINFMT_MISC=m
- CONFIG_SLAB=y
  # CONFIG_COMPACTION is not set
 +CONFIG_DMAPOOL_TEST=m
  CONFIG_USERFAULTFD=y
  CONFIG_NET=y
  CONFIG_PACKET=y
index 4cd9fa4cb10c8893055b2d52c289d9f7ac6ee27a,4cb49c77b66d292b857fb0e400a83f47ea4567f7..bbb251bab81addfe670d5e83360b3dec867407f4
@@@ -55,9 -55,7 +55,8 @@@ CONFIG_MQ_IOSCHED_KYBER=
  CONFIG_IOSCHED_BFQ=m
  # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
  CONFIG_BINFMT_MISC=m
- CONFIG_SLAB=y
  # CONFIG_COMPACTION is not set
 +CONFIG_DMAPOOL_TEST=m
  CONFIG_USERFAULTFD=y
  CONFIG_NET=y
  CONFIG_PACKET=y
index 7ee9ad50f0ad9d5ebfeea47d77f3e4d64877b083,59ee60ec1911c60ecef84f4a323c8dd3d060ed9a..4f9cfc70c66dbe43146124541e30357b6aa08d90
@@@ -33,9 -33,7 +33,8 @@@ CONFIG_MQ_IOSCHED_KYBER=
  CONFIG_IOSCHED_BFQ=m
  # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
  CONFIG_BINFMT_MISC=m
- CONFIG_SLAB=y
  # CONFIG_COMPACTION is not set
 +CONFIG_DMAPOOL_TEST=m
  CONFIG_USERFAULTFD=y
  CONFIG_NET=y
  CONFIG_PACKET=y
index 2488893616dc237fdbf51d5fd9d73b74611b775f,cf6aff2cfbe6e5ed7ab6e36c32b1d67d3c8d984d..67c42b4822f02688359c2bc43be37d7cd3a5df7e
@@@ -34,9 -34,7 +34,8 @@@ CONFIG_MQ_IOSCHED_KYBER=
  CONFIG_IOSCHED_BFQ=m
  # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
  CONFIG_BINFMT_MISC=m
- CONFIG_SLAB=y
  # CONFIG_COMPACTION is not set
 +CONFIG_DMAPOOL_TEST=m
  CONFIG_USERFAULTFD=y
  CONFIG_NET=y
  CONFIG_PACKET=y
index ffc676289f8780128644f861a25775c635782bab,b04de348ebb12e0ebeb8d3ee3c9eb1d5975f7e26..85f19515200bee213b19df54410591c70bfab871
@@@ -35,9 -35,7 +35,8 @@@ CONFIG_MQ_IOSCHED_KYBER=
  CONFIG_IOSCHED_BFQ=m
  # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
  CONFIG_BINFMT_MISC=m
- CONFIG_SLAB=y
  # CONFIG_COMPACTION is not set
 +CONFIG_DMAPOOL_TEST=m
  CONFIG_USERFAULTFD=y
  CONFIG_NET=y
  CONFIG_PACKET=y
Simple merge
index 85364f6178d440d82116f9114b1c3c2e4310d6a4,4e606dc8ec170fadfb633fb38511c6f1cc8684b7..91d66c0f5ab6c4844ea3f5fa0692f5e3bf0e040a
@@@ -31,9 -31,7 +31,8 @@@ CONFIG_MQ_IOSCHED_KYBER=
  CONFIG_IOSCHED_BFQ=m
  # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
  CONFIG_BINFMT_MISC=m
- CONFIG_SLAB=y
  # CONFIG_COMPACTION is not set
 +CONFIG_DMAPOOL_TEST=m
  CONFIG_USERFAULTFD=y
  CONFIG_NET=y
  CONFIG_PACKET=y
index 920b27977dac97157532c1f3557c08895be330a3,28eb15a1ffc47cdb20848d9e28da24f9e11195ae..812287a5b4fdce388bf123e325398cc0c454122b
@@@ -23,15 -25,12 +23,14 @@@ CONFIG_MACH_INGENIC_SOC=
  CONFIG_JZ4780_CI20=y
  CONFIG_HIGHMEM=y
  CONFIG_HZ_100=y
 -# CONFIG_SECCOMP is not set
  # CONFIG_SUSPEND is not set
 +# CONFIG_SECCOMP is not set
  CONFIG_MODULES=y
  # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
- CONFIG_SLAB=y
 +# CONFIG_COMPAT_BRK is not set
  # CONFIG_COMPACTION is not set
  CONFIG_CMA=y
 +# CONFIG_VM_EVENT_COUNTERS is not set
  CONFIG_NET=y
  CONFIG_PACKET=y
  CONFIG_UNIX=y
Simple merge
diff --cc mm/Kconfig
Simple merge
diff --cc mm/slab.c
Simple merge
diff --cc mm/slab.h
Simple merge
index 43c008165f56d906c8548dbf2188c9512b004391,90ecaface410a2ddc689eb8efa969272f2c35a25..d1555ea2981ac51f63c11aab9b84ec906d3c6910
@@@ -892,24 -876,17 +890,24 @@@ new_kmalloc_cache(int idx, enum kmalloc
                flags |= SLAB_CACHE_DMA;
        }
  
 -      kmalloc_caches[type][idx] = create_kmalloc_cache(
 -                                      kmalloc_info[idx].name[type],
 -                                      kmalloc_info[idx].size, flags, 0,
 -                                      kmalloc_info[idx].size);
+       /*
+        * If CONFIG_MEMCG_KMEM is enabled, disable cache merging for
+        * KMALLOC_NORMAL caches.
+        */
+       if (IS_ENABLED(CONFIG_MEMCG_KMEM) && (type == KMALLOC_NORMAL))
+               flags |= SLAB_NO_MERGE;
-       /*
-        * If CONFIG_MEMCG_KMEM is enabled, disable cache merging for
-        * KMALLOC_NORMAL caches.
-        */
-       if (IS_ENABLED(CONFIG_MEMCG_KMEM) && (type == KMALLOC_NORMAL))
-               kmalloc_caches[type][idx]->refcount = -1;
 +      if (minalign > ARCH_KMALLOC_MINALIGN) {
 +              aligned_size = ALIGN(aligned_size, minalign);
 +              aligned_idx = __kmalloc_index(aligned_size, false);
 +      }
 +
 +      if (!kmalloc_caches[type][aligned_idx])
 +              kmalloc_caches[type][aligned_idx] = create_kmalloc_cache(
 +                                      kmalloc_info[aligned_idx].name[type],
 +                                      aligned_size, flags);
 +      if (idx != aligned_idx)
 +              kmalloc_caches[type][idx] = kmalloc_caches[type][aligned_idx];
  }
  
  /*
diff --cc mm/slub.c
Simple merge