Re: [PATCH 08/10] mm: update fork mm->flags initialisation to use bitmap
From: David Hildenbrand <hidden>
Date: 2025-08-26 13:12:16
Also in:
linux-fsdevel, linux-mm, linux-perf-users, linux-s390, lkml, sparclinux
On 12.08.25 17:44, Lorenzo Stoakes wrote:
quoted hunk ↗ jump to hunk
We now need to account for flag initialisation on fork. We retain the existing logic as much as we can, but dub the existing flag mask legacy. These flags are therefore required to fit in the first 32-bits of the flags field. However, further flag propagation upon fork can be implemented in mm_init() on a per-flag basis. We ensure we clear the entire bitmap prior to setting it, and use __mm_flags_get_word() and __mm_flags_set_word() to manipulate these legacy fields efficiently. Signed-off-by: Lorenzo Stoakes <redacted> --- include/linux/mm_types.h | 13 ++++++++++--- kernel/fork.c | 7 +++++-- 2 files changed, 15 insertions(+), 5 deletions(-)diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 38b3fa927997..25577ab39094 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h@@ -1820,16 +1820,23 @@ enum { #define MMF_TOPDOWN 31 /* mm searches top down by default */ #define MMF_TOPDOWN_MASK _BITUL(MMF_TOPDOWN) -#define MMF_INIT_MASK (MMF_DUMPABLE_MASK | MMF_DUMP_FILTER_MASK |\ +#define MMF_INIT_LEGACY_MASK (MMF_DUMPABLE_MASK | MMF_DUMP_FILTER_MASK |\ MMF_DISABLE_THP_MASK | MMF_HAS_MDWE_MASK |\ MMF_VM_MERGE_ANY_MASK | MMF_TOPDOWN_MASK) -static inline unsigned long mmf_init_flags(unsigned long flags) +/* Legacy flags must fit within 32 bits. */ +static_assert((u64)MMF_INIT_LEGACY_MASK <= (u64)UINT_MAX);
Why not use the magic number 32 you are mentioning in the comment? :) static_assert((u32)MMF_INIT_LEGACY_MASK != MMF_INIT_LEGACY_MASK);
+ +/* + * Initialise legacy flags according to masks, propagating selected flags on + * fork. Further flag manipulation can be performed by the caller.
It's weird not reading "initialize", but I am afraid the kernel is already tainted :P t14s: ~/git/linux nth_page $ git grep "initialise" | wc -l 1778 t14s: ~/git/linux nth_page $ git grep "initialize" | wc -l 22043 Besides the assert simplification Acked-by: David Hildenbrand <redacted> -- Cheers David / dhildenb