linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v6 0/5] asdf
@ 2025-12-03 23:30 Kees Cook
  2025-12-03 23:30 ` [PATCH v6 1/5] slab: Introduce kmalloc_obj() and family Kees Cook
                   ` (5 more replies)
  0 siblings, 6 replies; 9+ messages in thread
From: Kees Cook @ 2025-12-03 23:30 UTC (permalink / raw)
  To: Vlastimil Babka
  Cc: Kees Cook, Linus Torvalds, Randy Dunlap, Miguel Ojeda,
	Przemek Kitszel, Gustavo A. R. Silva, Matthew Wilcox,
	John Hubbard, Joe Perches, Christoph Lameter, Marco Elver,
	Vegard Nossum, Pekka Enberg, David Rientjes, Joonsoo Kim,
	Andrew Morton, Roman Gushchin, Harry Yoo, Bill Wendling,
	Justin Stitt, Jann Horn, Greg Kroah-Hartman, Sasha Levin,
	linux-mm, Nathan Chancellor, Peter Zijlstra, Nick Desaulniers,
	Jonathan Corbet, Jakub Kicinski, Yafang Shao, Tony Ambardar,
	Alexander Lobakin, Jan Hendrik Farr, Alexander Potapenko,
	linux-kernel, linux-hardening, linux-doc, llvm

Hi,

Here's an update for the kmalloc_obj() API proposal based on Linus's
feedback. I normally wouldn't send this during the merge window,
but I wanted to have it updated for discussion at LPC[1] (and here in
email). Please see patches 1 and 4 for the bulk of the details. This is
obviously not v6.19 material! :)

Replacing[2] all existing simple code patterns found via Coccinelle
shows what could be replaced immediately (also saving roughly 1000 lines):

 7971 files changed, 19880 insertions(+), 20752 deletions(-)

This would take us from 24515 size-based k*alloc assignments to 7682:

$ git grep ' = kv\?[mzcv]alloc\(\|_array\)(' | wc -l
24515
$ git reset --hard HEAD^
HEAD is now at 8bccc91e6cdf treewide: kmalloc_obj conversion
$ git grep ' = kv\?[mzcv]alloc\(\|_array\)(' | wc -l
7682

This treewide change could be done at the end of the merge window just
before -rc1 is released (as is common for treewide changes). Handling
this API change in backports to -stable should be possible without much
hassle by backporting the __flex_counter() patch and this patch, while
taking conversions as-needed.

The impact on my bootable testing image size (with the treewide patch
applied) is tiny. With both GCC 13 (no __counted_by support) and GCC 15
(with __counted_by) the images are actually very slightly smaller:

$ size -G gcc-boot/vmlinux.gcc*
      text       data        bss      total filename
  29975593   21527689   16601200   68104482 gcc-boot/vmlinux.gcc13-before
  29969263   21528663   16601112   68099038 gcc-boot/vmlinux.gcc13-after
  30555626   21291299   17086620   68933545 gcc-boot/vmlinux.gcc15-before
  30550144   21292039   17086540   68928723 gcc-boot/vmlinux.gcc15-after

Thanks!

-Kees

[1] https://lpc.events/event/19/contributions/2136/
[2] https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git/commit/?h=dev/v6.18-rc6/alloc_obj/v5&id=f79ee96ad6a3cafdb274fe15d3ae067724e72327

 v6:
   - Drop _sz() helpers and simplify the resulting internals
   - Split _flex() helper into its own patch to make review easier
   - Explicitly use TYPE within the internals to make things more readable
   - Move treewide change details into the cover letter
 v5: https://lore.kernel.org/lkml/20251122014258.do.018-kees@kernel.org/
 v4: https://lore.kernel.org/lkml/20250315025852.it.568-kees@kernel.org/
 v3: https://lore.kernel.org/lkml/20240822231324.make.666-kees@kernel.org/
 v2: https://lore.kernel.org/lkml/20240807235433.work.317-kees@kernel.org/
 v1: https://lore.kernel.org/lkml/20240719192744.work.264-kees@kernel.org/

Kees Cook (5):
  slab: Introduce kmalloc_obj() and family
  checkpatch: Suggest kmalloc_obj family for sizeof allocations
  compiler_types: Introduce __flex_counter() and family
  slab: Introduce kmalloc_flex() and family
  coccinelle: Add kmalloc_objs conversion script

 scripts/checkpatch.pl                     |  39 ++++++--
 scripts/coccinelle/api/kmalloc_objs.cocci | 109 ++++++++++++++++++++++
 Documentation/process/deprecated.rst      |  31 ++++++
 include/linux/compiler_types.h            |  31 ++++++
 include/linux/overflow.h                  |  42 +++++++++
 include/linux/slab.h                      | 106 +++++++++++++++++++++
 6 files changed, 352 insertions(+), 6 deletions(-)
 create mode 100644 scripts/coccinelle/api/kmalloc_objs.cocci

-- 
2.34.1



^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2025-12-04 20:25 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-12-03 23:30 [PATCH v6 0/5] asdf Kees Cook
2025-12-03 23:30 ` [PATCH v6 1/5] slab: Introduce kmalloc_obj() and family Kees Cook
2025-12-03 23:30 ` [PATCH v6 2/5] checkpatch: Suggest kmalloc_obj family for sizeof allocations Kees Cook
2025-12-03 23:30 ` [PATCH v6 3/5] compiler_types: Introduce __flex_counter() and family Kees Cook
2025-12-04  8:54   ` Peter Zijlstra
2025-12-04 20:25     ` Kees Cook
2025-12-03 23:30 ` [PATCH v6 4/5] slab: Introduce kmalloc_flex() " Kees Cook
2025-12-03 23:30 ` [PATCH v6 5/5] coccinelle: Add kmalloc_objs conversion script Kees Cook
2025-12-04  6:07 ` [PATCH v6 0/5] asdf Kees Cook

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox