On 2023-09-01 16:13:04 [+0200], Jiri Olsa wrote: > On Wed, Aug 30, 2023 at 10:04:05AM +0200, Sebastian Andrzej Siewior wrote: > > __bpf_prog_enter() assigns bpf_tramp_run_ctx::saved_run_ctx before > > I guess you meant __bpf_prog_enter_recur right? > > > performing the recursion check which means in case of a recursion > > __bpf_prog_exit() uses the previously set > > bpf_tramp_run_ctx::saved_run_ctx value. > > > > __bpf_prog_enter_sleepable() assigns bpf_tramp_run_ctx::saved_run_ctx > > __bpf_prog_enter_sleepable_recur ? > > > after the recursion check which means in case of a recursion > > __bpf_prog_exit_sleepable() uses an uninitialized value. > > This does not look right. If I read the entry trampoline code right, > > then bpf_tramp_run_ctx isn't initialized upfront. > > > > Align __bpf_prog_enter_sleepable() with __bpf_prog_enter() and set > > ditto Yes, in both cases. The ones I mentioned have no conditionals. Sorry. > jirka Sebastian