On Wed, 1 Apr 2026 at 16:08, Kumar Kartikeya Dwivedi <[email protected]> wrote: > > On Wed, 1 Apr 2026 at 15:49, Varun R Mallya <[email protected]> wrote: > > > > kprobe.multi programs run in atomic/RCU context and cannot sleep. > > However, bpf_kprobe_multi_link_attach() did not validate whether the > > program being attached had the sleepable flag set, allowing sleepable > > helpers such as bpf_copy_from_user() to be invoked from a non-sleepable > > context. > > > > This causes a "sleeping function called from invalid context" splat: > > > > BUG: sleeping function called from invalid context at > > ./include/linux/uaccess.h:169 > > in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 1787, name: sudo > > preempt_count: 1, expected: 0 > > RCU nest depth: 2, expected: 0 > > > > Fix this by rejecting sleepable programs early in > > bpf_kprobe_multi_link_attach(), before any further processing. > > > > Fixes: 0dcac272540613d41c05e89679e4ddb978b612f1 ("bpf: Add multi kprobe > > link") > > Please use the right format. > Fixes: 0dcac2725406 ("bpf: Add multi kprobe link") > > You can add the follow to your .gitconfig to generate the fixes tag. > [alias] > fixes = log -1 --format='Fixes: %h (\"%s\")' > > > Signed-off-by: Varun R Mallya <[email protected]> > > --- > > kernel/trace/bpf_trace.c | 4 ++++ > > 1 file changed, 4 insertions(+) > > > > diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c > > index 0b040a417442..af7079aa0f36 100644 > > --- a/kernel/trace/bpf_trace.c > > +++ b/kernel/trace/bpf_trace.c > > @@ -2752,6 +2752,10 @@ int bpf_kprobe_multi_link_attach(const union > > bpf_attr *attr, struct bpf_prog *pr > > if (!is_kprobe_multi(prog)) > > return -EINVAL; > > > > + /* kprobe_multi is not allowed to be sleepable. */ > > + if (prog->sleepable) > > + return -EINVAL; > > + > > Looks ok to me, Jiri, could you also take a look? > > > /* Writing to context is not allowed for kprobes. */ > > if (prog->aux->kprobe_write_ctx) > > return -EINVAL; > > -- > > 2.53.0 > >
Also, please add a selftest. pw-bot: cr
