Hi Andrew,

The arc architecture with a specific randconfig does not like this, so I enclose
a fix-patch to satisfy this case.

>From 04c8084551dbbac3cd1716164e5a19a367be652e Mon Sep 17 00:00:00 2001
From: Lorenzo Stoakes <lorenzo.stoa...@oracle.com>
Date: Tue, 26 Aug 2025 12:25:16 +0100
Subject: [PATCH] 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.

Reported-by: kernel test robot <l...@intel.com>
Closes: 
https://lore.kernel.org/oe-kbuild-all/202508240502.frw1krzo-...@intel.com/
Signed-off-by: Lorenzo Stoakes <lorenzo.stoa...@oracle.com>
---
 include/linux/mm_types.h       | 12 ++++++++++++
 include/linux/sched/coredump.h |  5 +----
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index 0e001dbad455..205ec614171f 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 19ecfcceb27a..b7fafe999073 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 <linux/compiler_types.h>
 #include <linux/mm_types.h>

 #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);
--
2.50.1

Reply via email to