+1
−1
+5
−1
+6
−1
Loading
The interpreters_args array only accommodates stack depths up to MAX_BPF_STACK (512 bytes). However, do_misc_fixups() may allow a larger stack depth if JIT is requested. If JIT compilation later fails and falls back to the interpreter, the verifier invokes bpf_patch_call_args() with this oversized stack depth. This causes a load-time out-of-bounds (OOB) read when calculating the interpreter function pointer index. Fix this by changing bpf_patch_call_args() to return an int and explicitly rejecting the JIT fallback (returning -EINVAL) if the stack depth exceeds MAX_BPF_STACK. Fixes: 1ea47e01 ("bpf: add support for bpf_call to interpreter") Co-developed-by:Tianci Cao <ziye@zju.edu.cn> Signed-off-by:
Tianci Cao <ziye@zju.edu.cn> Co-developed-by:
Shenghao Yuan <shenghaoyuan0928@163.com> Signed-off-by:
Shenghao Yuan <shenghaoyuan0928@163.com> Signed-off-by:
Yazhou Tang <tangyazhou518@outlook.com> Acked-by:
Xu Kuohai <xukuohai@huawei.com> Link: https://lore.kernel.org/r/20260506094714.419842-2-tangyazhou@zju.edu.cn Signed-off-by:
Alexei Starovoitov <ast@kernel.org>