On Tue, Dec 02, 2025 at 10:10:21PM +0900, Harry Yoo wrote:
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.
Ok, I'll go drop these from all of these branches now and wait for a v2.
I'll also push out a -rc3.
thanks,
greg k-h