linux/drivers/misc/lkdtm
Josh Poimboeuf f93a840d4b objtool, lkdtm: Obfuscate the do_nothing() pointer
[ Upstream commit 05026ea01e ]

If execute_location()'s memcpy of do_nothing() gets inlined and unrolled
by the compiler, it copies one word at a time:

    mov    0x0(%rip),%rax    R_X86_64_PC32    .text+0x1374
    mov    %rax,0x38(%rbx)
    mov    0x0(%rip),%rax    R_X86_64_PC32    .text+0x136c
    mov    %rax,0x30(%rbx)
    ...

Those .text references point to the middle of the function, causing
objtool to complain about their lack of ENDBR.

Prevent that by resolving the function pointer at runtime rather than
build time.  This fixes the following warning:

  drivers/misc/lkdtm/lkdtm.o: warning: objtool: execute_location+0x23: relocation to !ENDBR: .text+0x1378

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Reviewed-by: Kees Cook <kees@kernel.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: https://lore.kernel.org/r/30b9abffbddeb43c4f6320b1270fa9b4d74c54ed.1742852847.git.jpoimboe@kernel.org
Closes: https://lore.kernel.org/oe-kbuild-all/202503191453.uFfxQy5R-lkp@intel.com/
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2025-05-02 07:47:03 +02:00
..
bugs.c drivers: lkdtm: fix clang -Wformat warning 2022-07-28 16:20:36 +02:00
cfi.c lkdtm: cfi: Make PAC test work with GCC 7 and 8 2022-12-31 13:33:07 +01:00
core.c lkdtm: replace ll_rw_block with submit_bh 2023-07-19 16:21:53 +02:00
fortify.c lkdtm: Update tests for memcpy() run-time warnings 2022-09-07 16:37:27 -07:00
heap.c lkdtm/heap: Hide allocation size from -Warray-bounds 2022-05-17 14:47:08 -07:00
lkdtm.h lkdtm: Move crashtype definitions into each category 2022-04-12 16:16:48 -07:00
Makefile lkdtm: Disable return thunks in rodata.c 2022-07-20 19:24:53 +02:00
perms.c objtool, lkdtm: Obfuscate the do_nothing() pointer 2025-05-02 07:47:03 +02:00
powerpc.c lkdtm: Move crashtype definitions into each category 2022-04-12 16:16:48 -07:00
refcount.c lkdtm: Move crashtype definitions into each category 2022-04-12 16:16:48 -07:00
rodata.c lkdtm: don't move ctors to .rodata 2020-12-09 15:51:14 +01:00
stackleak.c lkdtm/stackleak: Fix noinstr violation 2023-05-24 17:32:41 +01:00
usercopy.c treewide: Drop function_nocfi 2022-09-26 10:13:14 -07:00