Commit 5e901e249ad1 ("mm/rmap: convert "enum rmap_level" to "enum pgtable_level"") changed VM_WARN_ON_ONCE, a run time warning, into BUILD_BUG, a compile time error. After this adjustment, certain builds with older versions of clang (such as arm64 allmodconfig) started failing to build with: In file included from mm/rmap.c:63: In file included from include/linux/ksm.h:14: include/linux/rmap.h:440:3: error: call to __compiletime_assert_890 declared with 'error' attribute: BUILD_BUG failed BUILD_BUG(); ^ ... :21:1: note: expanded from here __compiletime_assert_890 ^ While __folio_rmap_sanity_checks() is marked 'inline', the compiler may not always honor it, such as when sanitizers or other instrumentation is enabled. If __folio_rmap_sanity_checks() is not inlined, there is no way the compiler can eliminate the default cause. Mark __folio_rmap_sanity_checks() as __always_inline to allow the BUILD_BUG() to work consistently, which clears up the error. Signed-off-by: Nathan Chancellor --- I assume this will be squashed into mm-rmap-convert-enum-rmap_level-to-enum-pgtable_level.patch so no fixes tag. --- include/linux/rmap.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/linux/rmap.h b/include/linux/rmap.h index 9d40d127bdb7..e8aff6d2deda 100644 --- a/include/linux/rmap.h +++ b/include/linux/rmap.h @@ -394,7 +394,7 @@ typedef int __bitwise rmap_t; /* The anonymous (sub)page is exclusive to a single process. */ #define RMAP_EXCLUSIVE ((__force rmap_t)BIT(0)) -static inline void __folio_rmap_sanity_checks(const struct folio *folio, +static __always_inline void __folio_rmap_sanity_checks(const struct folio *folio, const struct page *page, int nr_pages, enum pgtable_level level) { /* hugetlb folios are handled separately. */ --- base-commit: 6bee0462de1f9f4fa9400f153d3b0792c20d7111 change-id: 20250814-rmap-fix-build_bug-conversion-90441c036f42 Best regards, -- Nathan Chancellor