Calling bpf_get_smp_processor_id() in a kernel with CONFIG_SMP disabled can trigger the following bug, as pcpu_hot is unavailable: [ 8.471774] BUG: unable to handle page fault for address: 00000000936a290c [ 8.471849] #PF: supervisor read access in kernel mode [ 8.471881] #PF: error_code(0x0000) - not-present page Fix by preventing the inlining of bpf_get_smp_processor_id() when CONFIG_SMP disabled. Fixes: 1ae6921009e5 ("bpf: inline bpf_get_smp_processor_id() helper") Signed-off-by: Andrea Righi <arighi@xxxxxxxxxx> --- kernel/bpf/verifier.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index f7f892a52a37..d85413f1a784 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -21272,7 +21272,7 @@ static int do_misc_fixups(struct bpf_verifier_env *env) goto next_insn; } -#if defined(CONFIG_X86_64) && !defined(CONFIG_UML) +#if defined(CONFIG_SMP) && defined(CONFIG_X86_64) && !defined(CONFIG_UML) /* Implement bpf_get_smp_processor_id() inline. */ if (insn->imm == BPF_FUNC_get_smp_processor_id && verifier_inlines_helper_call(env, insn->imm)) { -- 2.47.1