On 9/1/23 4:19 PM, Sebastian Andrzej Siewior wrote:
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.
Sebastian, I fixed this up and also the __bpf_prog_exit*() presumably should
have been the _recur flavor.
https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git/commit/?id=6764e767f4af1e35f87f3497e1182d945de37f93
Thanks,
Daniel