On Tue, Dec 02, 2025 at 06:02:33PM +0530, Naresh Kamboju wrote:
On Tue, 2 Dec 2025 at 15:41, Greg Kroah-Hartman gregkh@linuxfoundation.org wrote:
This is the start of the stable review cycle for the 5.4.302 release. There are 184 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 04 Dec 2025 09:54:14 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at: https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.4.302-rc2... or in the git tree and branch at: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.4.y and the diffstat can be found below.
thanks,
greg k-h
The powerpc builds failed on the stable-rc 5.4.302-rc1 and 5.4.302-rc2.
- powerpc, build
- clang-21-cell_defconfig
- clang-nightly-cell_defconfig
- gcc-12-cell_defconfig
- gcc-12-defconfig
- gcc-12-ppc64e_defconfig
- gcc-12-ppc6xx_defconfig
- gcc-8-cell_defconfig
- gcc-8-defconfig
- gcc-8-ppc64e_defconfig
- gcc-8-ppc6xx_defconfig
Build regressions: powerpc: mm/mprotect.c:: pgtable.h:971:38: error: called object 'pmd_val' is not a function or function pointer Reported-by: Linux Kernel Functional Testing lkft@linaro.org
The bisection is in progress, meanwhile this patch looks to be causing the build failure,
mm/mprotect: delete pmd_none_or_clear_bad_unless_trans_huge() commit 670ddd8cdcbd1d07a4571266ae3517f821728c3a upstream.
The sequence patch. mm/mprotect: use long for page accountings and retval commit a79390f5d6a78647fd70856bd42b22d994de0ba2 upstream.
### Build error In file included from include/linux/bug.h:5, from include/linux/mmdebug.h:5, from include/linux/mm.h:9, from include/linux/pagewalk.h:5, from mm/mprotect.c:12: mm/mprotect.c: In function 'change_pte_range': arch/powerpc/include/asm/book3s/64/pgtable.h:971:38: error: called object 'pmd_val' is not a function or function pointer 971 | #define pmd_page_vaddr(pmd) __va(pmd_val(pmd) & ~PMD_MASKED_BITS) | ^~~~~~~ arch/powerpc/include/asm/bug.h:91:32: note: in definition of macro 'WARN_ON' 91 | int __ret_warn_on = !!(x); \ | ^ arch/powerpc/include/asm/page.h:229:9: note: in expansion of macro 'VIRTUAL_WARN_ON' 229 | VIRTUAL_WARN_ON((unsigned long)(x) >= PAGE_OFFSET); \ | ^~~~~~~~~~~~~~~ arch/powerpc/include/asm/book3s/64/pgtable.h:971:33: note: in expansion of macro '__va' 971 | #define pmd_page_vaddr(pmd) __va(pmd_val(pmd) & ~PMD_MASKED_BITS) | ^~~~ arch/powerpc/include/asm/book3s/64/pgtable.h:1007:21: note: in expansion of macro 'pmd_page_vaddr' 1007 | (((pte_t *) pmd_page_vaddr(*(dir))) + pte_index(addr)) | ^~~~~~~~~~~~~~ arch/powerpc/include/asm/book3s/64/pgtable.h:1009:41: note: in expansion of macro 'pte_offset_kernel' 1009 | #define pte_offset_map(dir,addr) pte_offset_kernel((dir), (addr)) | ^~~~~~~~~~~~~~~~~ include/linux/mm.h:2010:24: note: in expansion of macro 'pte_offset_map' 2010 | pte_t *__pte = pte_offset_map(pmd, address); \ | ^~~~~~~~~~~~~~ mm/mprotect.c:48:15: note: in expansion of macro 'pte_offset_map_lock' 48 | pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl); | ^~~~~~~~~~~~~~~~~~~ mm/mprotect.c:43:15: note: declared here 43 | pmd_t pmd_val; | ^~~~~~~ In file included from arch/powerpc/include/asm/mmu.h:132, from arch/powerpc/include/asm/lppaca.h:47, from arch/powerpc/include/asm/paca.h:17, from arch/powerpc/include/asm/current.h:13, from include/linux/thread_info.h:22, from include/asm-generic/preempt.h:5, from ./arch/powerpc/include/generated/asm/preempt.h:1, from include/linux/preempt.h:78, from include/linux/spinlock.h:51, from include/linux/mmzone.h:8, from include/linux/gfp.h:6, from include/linux/mm.h:10: arch/powerpc/include/asm/book3s/64/pgtable.h:971:38: error: called object 'pmd_val' is not a function or function pointer 971 | #define pmd_page_vaddr(pmd) __va(pmd_val(pmd) & ~PMD_MASKED_BITS) | ^~~~~~~ arch/powerpc/include/asm/page.h:230:47: note: in definition of macro '__va' 230 | (void *)(unsigned long)((phys_addr_t)(x) | PAGE_OFFSET); \ | ^ arch/powerpc/include/asm/book3s/64/pgtable.h:1007:21: note: in expansion of macro 'pmd_page_vaddr' 1007 | (((pte_t *) pmd_page_vaddr(*(dir))) + pte_index(addr)) | ^~~~~~~~~~~~~~ arch/powerpc/include/asm/book3s/64/pgtable.h:1009:41: note: in expansion of macro 'pte_offset_kernel' 1009 | #define pte_offset_map(dir,addr) pte_offset_kernel((dir), (addr)) | ^~~~~~~~~~~~~~~~~ include/linux/mm.h:2010:24: note: in expansion of macro 'pte_offset_map' 2010 | pte_t *__pte = pte_offset_map(pmd, address); \ | ^~~~~~~~~~~~~~ mm/mprotect.c:48:15: note: in expansion of macro 'pte_offset_map_lock' 48 | pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl); | ^~~~~~~~~~~~~~~~~~~ mm/mprotect.c:43:15: note: declared here 43 | pmd_t pmd_val; | ^~~~~~~
Hi Naresh, thanks for reporting!
Whoa, I really didn't expect this.
I named the variable pmd_val, and during the expansion of pte_offset_map_lock(), we call pmd_val(), and the compiler is confused because it's calling a variable rather than a function or macro.
And it didn't show up on my testing environment because on x86_64 implementation of pte_offset_map_lock() implementation we don't call pmd_val(). The fix would be simply renaming the variable.
To Greg and Sasha; I guess these patches will be dropped for this cycle and I'm supposed to send V2, right? These two patches are queued for 6.1, 5.15, 5.10 as well.
I tried my best to make sure these backports are properly tested, and apologies for the inconvenience that I caused.