Re: [PATCH] x86/mm: fix objtool failure with KMSAN enabled

Ilya Leoshkevich <[email protected]>
Newsgroups dev.linux.lists.llvm,org.kernel.vger.linux-kernel,org.kvack.linux-mm
Message-ID <[email protected]>

On 7/1/26 14:51, Dmitry Voytik wrote:
> This patch fixes broken builds with defconfig + CONFIG_KMSAN +
> CONFIG_DEBUG_INFO_*.
> 
> To reproduce the issue before the fix:
>    make mrproper
>    make LLVM=1 defconfig
>    ./scripts/config -e CONFIG_KMSAN \
>      -e CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
>    make LLVM=1 olddefconfig
>    make LLVM=1 -j(nproc) vmlinux
>    ...
>      LD      vmlinux.o
>    vmlinux.o: warning: objtool: folio_zero_user+0x801: undefined stack state
>    vmlinux.o: error: objtool: folio_zero_user+0x801: unknown CFA base reg -1
>    make[2]: *** [scripts/Makefile.vmlinux_o:76: vmlinux.o] Error 255
> 
> objtool in verbose mode shows how the frame pointer is omitted:
>    make LLVM=1 OBJTOOL_VERBOSE=1 -j(nproc) vmlinux
>    ...
>    b15a2c:  folio_zero_user+0x7fc      xor    %eax,%eax
>    b15a2e:  folio_zero_user+0x7fe      mov    %rcx,%rsp
>    b15a31:  folio_zero_user+0x801      mov    %r14,%rdi
>    b15a34:  folio_zero_user+0x804      mov    %rbx,%rcx
>    b15a37:  folio_zero_user+0x807      call   0xb15a3c <__clear_pages_unrol
> 
> After the fix, the frame pointer is back:
>    b15a37: 31 c0                       xor    %eax,%eax
>    b15a39: 48 89 ec                    mov    %rbp,%rsp
>    b15a3c: 4c 89 f7                    mov    %r14,%rdi
>    b15a3f: 48 89 d9                    mov    %rbx,%rcx
>    b15a42: e8 00 00 00 00              call   b15a47 <folio_zero_user+0x817>
> 
> It seems the issue was introduced by
> commit 54a6b89a3db2 ("x86/mm: simplify clear_page_*")
> 
> The actual fix is to revert the change how ASM_CALL_CONSTRAINT is
> positioned.
> Additionally, reintroduce asm_inline to prevent potential compiler
> rejection of inlining.
> 
> Link: https://lore.kernel.org/CAAX90H2_RPnZL_dFYN7cQF6yt-wAweKKSx2=6e2aZ0kv+Pm+NQ@mail.gmail.com
> Signed-off-by: Dmitry Voytik <[email protected]>
> ---
>   arch/x86/include/asm/page_64.h | 13 +++++++------
>   1 file changed, 7 insertions(+), 6 deletions(-)

FWIW I just bumped into this build issue; this patch helped and the
resulting kernel booted.

Config: https://pastebin.com/B6GedVDL


Tested-by: Ilya Leoshkevich <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.