Messages in this thread Patch in this message | | | Date | Thu, 20 Feb 2020 21:45:22 +0100 | From | Thomas Gleixner <> | Subject | [patch V2 05/20] bpf: Remove recursion prevention from rcu free callback |
| |
If an element is freed via RCU then recursion into BPF instrumentation functions is not a concern. The element is already detached from the map and the RCU callback does not hold any locks on which a kprobe, perf event or tracepoint attached BPF program could deadlock.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- V2: New patch --- kernel/bpf/hashtab.c | 8 -------- 1 file changed, 8 deletions(-)
--- a/kernel/bpf/hashtab.c +++ b/kernel/bpf/hashtab.c @@ -694,15 +694,7 @@ static void htab_elem_free_rcu(struct rc struct htab_elem *l = container_of(head, struct htab_elem, rcu); struct bpf_htab *htab = l->htab; - /* must increment bpf_prog_active to avoid kprobe+bpf triggering while - * we're calling kfree, otherwise deadlock is possible if kprobes - * are placed somewhere inside of slub - */ - preempt_disable(); - __this_cpu_inc(bpf_prog_active); htab_elem_free(htab, l); - __this_cpu_dec(bpf_prog_active); - preempt_enable(); } static void free_htab_elem(struct bpf_htab *htab, struct htab_elem *l)
| |