From: Lorenzo Stoakes Date: Tue, 26 Aug 2025 11:25:16 +0000 (+0100) Subject: mm: abstract set_mask_bits() invocation to mm_types.h to satisfy ARC X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=b28dcb94739bfbf4d707da25862e4efc094f5cfa;p=users%2Fjedix%2Flinux-maple.git mm: abstract set_mask_bits() invocation to mm_types.h to satisfy ARC There's some horrible recursive header issue for ARCH whereby you can't even apparently include very fundamental headers like compiler_types.h in linux/sched/coredump.h. So work around this by putting the thing that needs this (use of ACCESS_PRIVATE()) into mm_types.h which presumably in some fashion avoids this issue. This also makes it consistent with __mm_flags_get_dumpable() so is a good change to make things more consistent and neat anyway. Link: https://lkml.kernel.org/r/0e7ad263-1ff7-446d-81fe-97cff9c0e7ed@lucifer.local Reported-by: kernel test robot Closes: https://lore.kernel.org/oe-kbuild-all/202508240502.frw1Krzo-lkp@intel.com/ Signed-off-by: Lorenzo Stoakes Signed-off-by: Andrew Morton --- diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 0e001dbad4559..9d224075d8956 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -1255,6 +1255,18 @@ static inline unsigned long __mm_flags_get_word(const struct mm_struct *mm) return bitmap_read(bitmap, 0, BITS_PER_LONG); } +/* + * Update the first system word of mm flags ONLY, applying the specified mask to + * it, then setting all flags specified by bits. + */ +static inline void __mm_flags_set_mask_bits_word(struct mm_struct *mm, + unsigned long mask, unsigned long bits) +{ + unsigned long *bitmap = ACCESS_PRIVATE(&mm->_flags, __mm_flags); + + set_mask_bits(bitmap, mask, bits); +} + #define MM_MT_FLAGS (MT_FLAGS_ALLOC_RANGE | MT_FLAGS_LOCK_EXTERN | \ MT_FLAGS_USE_RCU) extern struct mm_struct init_mm; diff --git a/include/linux/sched/coredump.h b/include/linux/sched/coredump.h index 19ecfcceb27ad..b7fafe9990734 100644 --- a/include/linux/sched/coredump.h +++ b/include/linux/sched/coredump.h @@ -2,7 +2,6 @@ #ifndef _LINUX_SCHED_COREDUMP_H #define _LINUX_SCHED_COREDUMP_H -#include #include #define SUID_DUMP_DISABLE 0 /* No setuid dumping */ @@ -20,9 +19,7 @@ static inline unsigned long __mm_flags_get_dumpable(struct mm_struct *mm) static inline void __mm_flags_set_mask_dumpable(struct mm_struct *mm, int value) { - unsigned long *bitmap = ACCESS_PRIVATE(&mm->_flags, __mm_flags); - - set_mask_bits(bitmap, MMF_DUMPABLE_MASK, value); + __mm_flags_set_mask_bits_word(mm, MMF_DUMPABLE_MASK, value); } extern void set_dumpable(struct mm_struct *mm, int value);