Thread (11 messages) 11 messages, 3 authors, 2021-05-19

Re: [PATCH v3] mm, slub: change run-time assertion in kmalloc_index() to compile-time

flat view

From: Hyeonggon Yoo <hidden>
Date: 2021-05-15 21:10:15
Also in: linux-mm, lkml

Hello Vlastimil, recently kbuild-all test bot reported compile error on
clang 10.0.1, with defconfig.

Nathan Chancellor wrote:
I think this happens because arch_prepare_optimized_kprobe() calls kzalloc()
with a size of MAX_OPTINSN_SIZE, which is

#define MAX_OPTINSN_SIZE                                \
      (((unsigned long)optprobe_template_end -        \
         (unsigned long)optprobe_template_entry) +     \
        MAX_OPTIMIZED_LENGTH + JMP32_INSN_SIZE)
and the optprobe_template_{end,entry} are not evaluated as constants.

I am not sure what the solution is. There seem to be a growing list of issues
with LLVM 10 that were fixed in LLVM 11, which might necessitate requiring
LLVM 11 and newer to build the kernel, given this affects a defconfig.
Cheers,
Nathan

I think it's because kmalloc compiles successfully when size is constant,
and kmalloc_index isn't. so I think compiler seems to be confused.

currently if size is non-constant, kmalloc calls dummy function __kmalloc,
which always returns NULL.

so what about changing kmalloc to do compile-time assertion too, and track
all callers that are calling kmalloc with non-constant argument.

How do you think? If you think it is the solution, I'll do that work.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help