[gourryinverse:scratch/gourry/cramtest/cram_72 332/661] mm/huge_memory.c:2874:35: error: call to '__compiletime_assert_612' declared with 'error' attribute: BUILD_BUG failed

kernel test robot <[email protected]> Fri, 24 Jul 2026 14:08:13 +0800
Newsgroups dev.linux.lists.oe-kbuild
Message-ID <[email protected]>
:::::: 
:::::: Manual check reason: "__compiletime_assert_NNN"
:::::: 

BCC: [email protected]
CC: [email protected]
CC: [email protected]
CC: Gregory Price <[email protected]>
TO: "Kiryl Shutsemau (Meta)" <[email protected]>
CC: Andrew Morton <[email protected]>
CC: Linux Memory Management List <[email protected]>

tree:   https://github.com/gourryinverse/linux scratch/gourry/cramtest/cram_72
head:   22cb35457d24fb35765ef124f9c74c08a5f546a9
commit: 7c4eebb3672eaa77e583b557b808ffcc78d74f5d [332/661] mm: preserve RWP marker across PTE rewrites
:::::: branch date: 3 days ago
:::::: commit date: 6 days ago
config: sparc64-randconfig-002-20260724 (https://download.01.org/0day-ci/archive/20260724/[email protected]/config)
compiler: clang version 21.1.8 (https://github.com/llvm/llvm-project 2078da43e25a4623cab2d0d60decddf709aaea28)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260724/[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/r/[email protected]/

All errors (new ones prefixed by >>):

>> mm/huge_memory.c:2874:35: error: call to '__compiletime_assert_612' declared with 'error' attribute: BUILD_BUG failed
    2874 |                 _dst_pmd = pmd_modify(_dst_pmd, PAGE_NONE);
         |                                                 ^
   include/linux/pgtable.h:2145:22: note: expanded from macro 'PAGE_NONE'
    2145 | #define PAGE_NONE ({ BUILD_BUG(); (pgprot_t){0}; })
         |                      ^
   include/linux/build_bug.h:60:21: note: expanded from macro 'BUILD_BUG'
      60 | #define BUILD_BUG() BUILD_BUG_ON_MSG(1, "BUILD_BUG failed")
         |                     ^
   include/linux/build_bug.h:40:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
      40 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^
   note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
   include/linux/compiler_types.h:690:2: note: expanded from macro '_compiletime_assert'
     690 |         __compiletime_assert(condition, msg, prefix, suffix)
         |         ^
   include/linux/compiler_types.h:683:4: note: expanded from macro '__compiletime_assert'
     683 |                         prefix ## suffix();                             \
         |                         ^
   <scratch space>:157:1: note: expanded from here
     157 | __compiletime_assert_612
         | ^
   1 error generated.


vim +2874 mm/huge_memory.c

cb0f01beb16669 Peter Xu                2024-08-12  2765  
adef440691bab8 Andrea Arcangeli        2023-12-06  2766  #ifdef CONFIG_USERFAULTFD
adef440691bab8 Andrea Arcangeli        2023-12-06  2767  /*
867a43a34ff8a3 Lokesh Gidra            2024-02-15  2768   * The PT lock for src_pmd and dst_vma/src_vma (for reading) are locked by
adef440691bab8 Andrea Arcangeli        2023-12-06  2769   * the caller, but it must return after releasing the page_table_lock.
adef440691bab8 Andrea Arcangeli        2023-12-06  2770   * Just move the page from src_pmd to dst_pmd if possible.
adef440691bab8 Andrea Arcangeli        2023-12-06  2771   * Return zero if succeeded in moving the page, -EAGAIN if it needs to be
adef440691bab8 Andrea Arcangeli        2023-12-06  2772   * repeated by the caller, or other errors in case of failure.
adef440691bab8 Andrea Arcangeli        2023-12-06  2773   */
adef440691bab8 Andrea Arcangeli        2023-12-06  2774  int move_pages_huge_pmd(struct mm_struct *mm, pmd_t *dst_pmd, pmd_t *src_pmd, pmd_t dst_pmdval,
adef440691bab8 Andrea Arcangeli        2023-12-06  2775  			struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma,
adef440691bab8 Andrea Arcangeli        2023-12-06  2776  			unsigned long dst_addr, unsigned long src_addr)
adef440691bab8 Andrea Arcangeli        2023-12-06  2777  {
adef440691bab8 Andrea Arcangeli        2023-12-06  2778  	pmd_t _dst_pmd, src_pmdval;
adef440691bab8 Andrea Arcangeli        2023-12-06  2779  	struct page *src_page;
adef440691bab8 Andrea Arcangeli        2023-12-06  2780  	struct folio *src_folio;
adef440691bab8 Andrea Arcangeli        2023-12-06  2781  	spinlock_t *src_ptl, *dst_ptl;
adef440691bab8 Andrea Arcangeli        2023-12-06  2782  	pgtable_t src_pgtable;
adef440691bab8 Andrea Arcangeli        2023-12-06  2783  	struct mmu_notifier_range range;
adef440691bab8 Andrea Arcangeli        2023-12-06  2784  	int err = 0;
adef440691bab8 Andrea Arcangeli        2023-12-06  2785  
adef440691bab8 Andrea Arcangeli        2023-12-06  2786  	src_pmdval = *src_pmd;
adef440691bab8 Andrea Arcangeli        2023-12-06  2787  	src_ptl = pmd_lockptr(mm, src_pmd);
adef440691bab8 Andrea Arcangeli        2023-12-06  2788  
adef440691bab8 Andrea Arcangeli        2023-12-06  2789  	lockdep_assert_held(src_ptl);
867a43a34ff8a3 Lokesh Gidra            2024-02-15  2790  	vma_assert_locked(src_vma);
867a43a34ff8a3 Lokesh Gidra            2024-02-15  2791  	vma_assert_locked(dst_vma);
adef440691bab8 Andrea Arcangeli        2023-12-06  2792  
adef440691bab8 Andrea Arcangeli        2023-12-06  2793  	/* Sanity checks before the operation */
adef440691bab8 Andrea Arcangeli        2023-12-06  2794  	if (WARN_ON_ONCE(!pmd_none(dst_pmdval)) || WARN_ON_ONCE(src_addr & ~HPAGE_PMD_MASK) ||
adef440691bab8 Andrea Arcangeli        2023-12-06  2795  	    WARN_ON_ONCE(dst_addr & ~HPAGE_PMD_MASK)) {
adef440691bab8 Andrea Arcangeli        2023-12-06  2796  		spin_unlock(src_ptl);
adef440691bab8 Andrea Arcangeli        2023-12-06  2797  		return -EINVAL;
adef440691bab8 Andrea Arcangeli        2023-12-06  2798  	}
adef440691bab8 Andrea Arcangeli        2023-12-06  2799  
adef440691bab8 Andrea Arcangeli        2023-12-06  2800  	if (!pmd_trans_huge(src_pmdval)) {
adef440691bab8 Andrea Arcangeli        2023-12-06  2801  		spin_unlock(src_ptl);
0ac881efe16468 Lorenzo Stoakes         2025-11-10  2802  		if (pmd_is_migration_entry(src_pmdval)) {
0a7ef0a99c1b37 Usama Arif              2026-07-05  2803  			pmd_migration_entry_wait(mm, src_pmd);
adef440691bab8 Andrea Arcangeli        2023-12-06  2804  			return -EAGAIN;
adef440691bab8 Andrea Arcangeli        2023-12-06  2805  		}
adef440691bab8 Andrea Arcangeli        2023-12-06  2806  		return -ENOENT;
adef440691bab8 Andrea Arcangeli        2023-12-06  2807  	}
adef440691bab8 Andrea Arcangeli        2023-12-06  2808  
adef440691bab8 Andrea Arcangeli        2023-12-06  2809  	src_page = pmd_page(src_pmdval);
eb1521dad8f391 Suren Baghdasaryan      2024-01-31  2810  
eb1521dad8f391 Suren Baghdasaryan      2024-01-31  2811  	if (!is_huge_zero_pmd(src_pmdval)) {
adef440691bab8 Andrea Arcangeli        2023-12-06  2812  		if (unlikely(!PageAnonExclusive(src_page))) {
adef440691bab8 Andrea Arcangeli        2023-12-06  2813  			spin_unlock(src_ptl);
adef440691bab8 Andrea Arcangeli        2023-12-06  2814  			return -EBUSY;
adef440691bab8 Andrea Arcangeli        2023-12-06  2815  		}
adef440691bab8 Andrea Arcangeli        2023-12-06  2816  
adef440691bab8 Andrea Arcangeli        2023-12-06  2817  		src_folio = page_folio(src_page);
adef440691bab8 Andrea Arcangeli        2023-12-06  2818  		folio_get(src_folio);
eb1521dad8f391 Suren Baghdasaryan      2024-01-31  2819  	} else
eb1521dad8f391 Suren Baghdasaryan      2024-01-31  2820  		src_folio = NULL;
eb1521dad8f391 Suren Baghdasaryan      2024-01-31  2821  
adef440691bab8 Andrea Arcangeli        2023-12-06  2822  	spin_unlock(src_ptl);
adef440691bab8 Andrea Arcangeli        2023-12-06  2823  
adef440691bab8 Andrea Arcangeli        2023-12-06  2824  	flush_cache_range(src_vma, src_addr, src_addr + HPAGE_PMD_SIZE);
adef440691bab8 Andrea Arcangeli        2023-12-06  2825  	mmu_notifier_range_init(&range, MMU_NOTIFY_CLEAR, 0, mm, src_addr,
adef440691bab8 Andrea Arcangeli        2023-12-06  2826  				src_addr + HPAGE_PMD_SIZE);
adef440691bab8 Andrea Arcangeli        2023-12-06  2827  	mmu_notifier_invalidate_range_start(&range);
adef440691bab8 Andrea Arcangeli        2023-12-06  2828  
cc22b9978509ec Lokesh Gidra            2025-09-23  2829  	if (src_folio)
adef440691bab8 Andrea Arcangeli        2023-12-06  2830  		folio_lock(src_folio);
adef440691bab8 Andrea Arcangeli        2023-12-06  2831  
adef440691bab8 Andrea Arcangeli        2023-12-06  2832  	dst_ptl = pmd_lockptr(mm, dst_pmd);
adef440691bab8 Andrea Arcangeli        2023-12-06  2833  	double_pt_lock(src_ptl, dst_ptl);
adef440691bab8 Andrea Arcangeli        2023-12-06  2834  	if (unlikely(!pmd_same(*src_pmd, src_pmdval) ||
adef440691bab8 Andrea Arcangeli        2023-12-06  2835  		     !pmd_same(*dst_pmd, dst_pmdval))) {
adef440691bab8 Andrea Arcangeli        2023-12-06  2836  		err = -EAGAIN;
adef440691bab8 Andrea Arcangeli        2023-12-06  2837  		goto unlock_ptls;
adef440691bab8 Andrea Arcangeli        2023-12-06  2838  	}
eb1521dad8f391 Suren Baghdasaryan      2024-01-31  2839  	if (src_folio) {
adef440691bab8 Andrea Arcangeli        2023-12-06  2840  		if (folio_maybe_dma_pinned(src_folio) ||
adef440691bab8 Andrea Arcangeli        2023-12-06  2841  		    !PageAnonExclusive(&src_folio->page)) {
adef440691bab8 Andrea Arcangeli        2023-12-06  2842  			err = -EBUSY;
adef440691bab8 Andrea Arcangeli        2023-12-06  2843  			goto unlock_ptls;
adef440691bab8 Andrea Arcangeli        2023-12-06  2844  		}
adef440691bab8 Andrea Arcangeli        2023-12-06  2845  
adef440691bab8 Andrea Arcangeli        2023-12-06  2846  		if (WARN_ON_ONCE(!folio_test_head(src_folio)) ||
adef440691bab8 Andrea Arcangeli        2023-12-06  2847  		    WARN_ON_ONCE(!folio_test_anon(src_folio))) {
adef440691bab8 Andrea Arcangeli        2023-12-06  2848  			err = -EBUSY;
adef440691bab8 Andrea Arcangeli        2023-12-06  2849  			goto unlock_ptls;
adef440691bab8 Andrea Arcangeli        2023-12-06  2850  		}
adef440691bab8 Andrea Arcangeli        2023-12-06  2851  
adef440691bab8 Andrea Arcangeli        2023-12-06  2852  		src_pmdval = pmdp_huge_clear_flush(src_vma, src_addr, src_pmd);
adef440691bab8 Andrea Arcangeli        2023-12-06  2853  		/* Folio got pinned from under us. Put it back and fail the move. */
adef440691bab8 Andrea Arcangeli        2023-12-06  2854  		if (folio_maybe_dma_pinned(src_folio)) {
adef440691bab8 Andrea Arcangeli        2023-12-06  2855  			set_pmd_at(mm, src_addr, src_pmd, src_pmdval);
adef440691bab8 Andrea Arcangeli        2023-12-06  2856  			err = -EBUSY;
adef440691bab8 Andrea Arcangeli        2023-12-06  2857  			goto unlock_ptls;
adef440691bab8 Andrea Arcangeli        2023-12-06  2858  		}
adef440691bab8 Andrea Arcangeli        2023-12-06  2859  
c0205eaf3af9f5 Lokesh Gidra            2024-04-04  2860  		folio_move_anon_rmap(src_folio, dst_vma);
b5ba3a64279355 Suren Baghdasaryan      2024-04-14  2861  		src_folio->index = linear_page_index(dst_vma, dst_addr);
c0205eaf3af9f5 Lokesh Gidra            2024-04-04  2862  
e3981db444a0a1 Matthew Wilcox (Oracle  2025-04-02  2863) 		_dst_pmd = folio_mk_pmd(src_folio, dst_vma->vm_page_prot);
adef440691bab8 Andrea Arcangeli        2023-12-06  2864  		/* Follow mremap() behavior and treat the entry dirty after the move */
adef440691bab8 Andrea Arcangeli        2023-12-06  2865  		_dst_pmd = pmd_mkwrite(pmd_mkdirty(_dst_pmd), dst_vma);
eb1521dad8f391 Suren Baghdasaryan      2024-01-31  2866  	} else {
eb1521dad8f391 Suren Baghdasaryan      2024-01-31  2867  		src_pmdval = pmdp_huge_clear_flush(src_vma, src_addr, src_pmd);
fae654083bfa40 Chris Down              2026-03-03  2868  		_dst_pmd = move_soft_dirty_pmd(src_pmdval);
fae654083bfa40 Chris Down              2026-03-03  2869  		_dst_pmd = clear_uffd_wp_pmd(_dst_pmd);
eb1521dad8f391 Suren Baghdasaryan      2024-01-31  2870  	}
7c4eebb3672eaa Kiryl Shutsemau (Meta   2026-07-08  2871) 
7c4eebb3672eaa Kiryl Shutsemau (Meta   2026-07-08  2872) 	/* Re-arm RWP on the moved PMD if dst_vma is RWP-registered. */
7c4eebb3672eaa Kiryl Shutsemau (Meta   2026-07-08  2873) 	if (userfaultfd_rwp(dst_vma)) {
7c4eebb3672eaa Kiryl Shutsemau (Meta   2026-07-08 @2874) 		_dst_pmd = pmd_modify(_dst_pmd, PAGE_NONE);
7c4eebb3672eaa Kiryl Shutsemau (Meta   2026-07-08  2875) 		_dst_pmd = pmd_mkuffd(_dst_pmd);
7c4eebb3672eaa Kiryl Shutsemau (Meta   2026-07-08  2876) 	}
7c4eebb3672eaa Kiryl Shutsemau (Meta   2026-07-08  2877) 
adef440691bab8 Andrea Arcangeli        2023-12-06  2878  	set_pmd_at(mm, dst_addr, dst_pmd, _dst_pmd);
adef440691bab8 Andrea Arcangeli        2023-12-06  2879  
adef440691bab8 Andrea Arcangeli        2023-12-06  2880  	src_pgtable = pgtable_trans_huge_withdraw(mm, src_pmd);
adef440691bab8 Andrea Arcangeli        2023-12-06  2881  	pgtable_trans_huge_deposit(mm, dst_pmd, src_pgtable);
adef440691bab8 Andrea Arcangeli        2023-12-06  2882  unlock_ptls:
adef440691bab8 Andrea Arcangeli        2023-12-06  2883  	double_pt_unlock(src_ptl, dst_ptl);
adef440691bab8 Andrea Arcangeli        2023-12-06  2884  	/* unblock rmap walks */
eb1521dad8f391 Suren Baghdasaryan      2024-01-31  2885  	if (src_folio)
adef440691bab8 Andrea Arcangeli        2023-12-06  2886  		folio_unlock(src_folio);
adef440691bab8 Andrea Arcangeli        2023-12-06  2887  	mmu_notifier_invalidate_range_end(&range);
eb1521dad8f391 Suren Baghdasaryan      2024-01-31  2888  	if (src_folio)
adef440691bab8 Andrea Arcangeli        2023-12-06  2889  		folio_put(src_folio);
adef440691bab8 Andrea Arcangeli        2023-12-06  2890  	return err;
adef440691bab8 Andrea Arcangeli        2023-12-06  2891  }
adef440691bab8 Andrea Arcangeli        2023-12-06  2892  #endif /* CONFIG_USERFAULTFD */
adef440691bab8 Andrea Arcangeli        2023-12-06  2893  

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki