Re: [akpm-mm:mm-unstable 340/601] include/linux/compiler_types.h:702:38: error: call to '__compiletime_assert_501' declared with attribute error: BUILD_BUG failed
Kiryl Shutsemau <[email protected]> Mon, 27 Jul 2026 10:25:42 +0100
| Newsgroups | dev.linux.lists.oe-kbuild-all,org.kernel.vger.mm-commits,org.kvack.linux-mm |
|---|---|
| Message-ID | <amcitKvUvFYr8W38@thinkstation> |
On Sat, Jul 25, 2026 at 07:51:08PM -0700, Andrew Morton wrote: > On Sat, 25 Jul 2026 08:56:41 +0800 kernel test robot <[email protected]> wrote: > > > tree: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-unstable > > head: c04df384b55dd9dcf72c36b661becb5aaba371a9 > > commit: d2aed7c02fafacb9d055a2f683ac12e977ef16e0 [340/601] mm: preserve RWP marker across PTE rewrites > > config: sparc64-randconfig-r134-20260725 (https://download.01.org/0day-ci/archive/20260725/[email protected]/config) > > compiler: sparc64-linux-gcc (GCC) 8.5.0 > > sparse: v0.6.5-rc1 > > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260725/[email protected]/reproduce) > > > > If you fix the issue in a separate patch/commit (i.e. not just a new version of > > the same patch/commit), kindly add following tags > > | Reported-by: kernel test robot <[email protected]> > > | Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/ > > > > All errors (new ones prefixed by >>): > > > > In file included from <command-line>: > > mm/huge_memory.c: In function 'move_pages_huge_pmd': > > >> include/linux/compiler_types.h:702:38: error: call to '__compiletime_assert_501' declared with attribute error: BUILD_BUG failed > > _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) > > ^ > > include/linux/compiler_types.h:683:4: note: in definition of macro '__compiletime_assert' > > prefix ## suffix(); \ > > Well dang. > > I can't reproduce with sparc64 gcc-15.2.0. > Documentation/process/changes.rst says we support 8,1, released in > 2018. Your 8.5 was released in 2021 so perhaps three other people are > still using it :( > > https://www.kernel.org/pub/tools/crosstool/ doesn't appear to have > sparc64 gcc-8.5 so I gave up. > > So I dunno. I'm inclined to ignore and assume that if someone else hits > this one day, they'll either fix it or provide us with enough details > to figure it out. I cannot reproduce it either. Maybe we can help compiler to derive that the code is dead? -- >8 -- From: "Kiryl Shutsemau (Meta)" <[email protected]> Date: Mon, 27 Jul 2026 10:16:11 +0100 Subject: [PATCH] mm: fold userfaultfd_rwp() to false without CONFIG_ARCH_HAS_PTE_PROTNONE RWP tracks accesses by installing PAGE_NONE (protnone) PTEs, so its code paths are gated on userfaultfd_rwp(). Without CONFIG_ARCH_HAS_PTE_PROTNONE there is no PAGE_NONE -- <linux/pgtable.h> defines it to a BUILD_BUG() stub, relying on callers folding such paths to dead code via IS_ENABLED(CONFIG_ARCH_HAS_PTE_PROTNONE). userfaultfd_rwp() was not a compile-time constant, so the compiler could not fold those paths. With an older compiler (gcc 8.5.0, sparc64) the PAGE_NONE reference in move_pages_huge_pmd() survived to codegen: mm/huge_memory.c:2874: _dst_pmd = pmd_modify(_dst_pmd, PAGE_NONE); compiler_types.h:702: error: call to '__compiletime_assert_501' declared with attribute error: BUILD_BUG failed RWP cannot exist without protnone, so return a compile-time false when CONFIG_ARCH_HAS_PTE_PROTNONE is unset; every RWP path then folds away. Reported-by: kernel test robot <[email protected]> Signed-off-by: Kiryl Shutsemau (Meta) <[email protected]> --- include/linux/userfaultfd_k.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/include/linux/userfaultfd_k.h b/include/linux/userfaultfd_k.h index bfbd6a59909f..0ce438ec294f 100644 --- a/include/linux/userfaultfd_k.h +++ b/include/linux/userfaultfd_k.h @@ -221,6 +221,12 @@ static inline bool userfaultfd_minor(struct vm_area_struct *vma) static inline bool userfaultfd_rwp(struct vm_area_struct *vma) { + /* + * Callers gate PAGE_NONE usage on this; PAGE_NONE is a BUILD_BUG() + * without CONFIG_ARCH_HAS_PTE_PROTNONE, so fold to false. + */ + if (!IS_ENABLED(CONFIG_ARCH_HAS_PTE_PROTNONE)) + return false; return vma_test_single_mask(vma, VMA_UFFD_RWP); } base-commit: 505f6bc5c6c6db7d6390ea33c4e2ab44379e6f49 -- Kiryl Shutsemau / Kirill A. Shutemov