perf/bpf: Remove preempt disable around BPF invocation
authorThomas Gleixner <tglx@linutronix.de>
Mon, 24 Feb 2020 14:01:38 +0000 (15:01 +0100)
committerAlexei Starovoitov <ast@kernel.org>
Tue, 25 Feb 2020 00:18:20 +0000 (16:18 -0800)
The BPF invocation from the perf event overflow handler does not require to
disable preemption because this is called from NMI or at least hard
interrupt context which is already non-preemptible.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20200224145643.151953573@linutronix.de
kernel/events/core.c

index e453589da97ca3684ca514d43c6e83a0dbd271e7..bbdfac0182f41e6f5c5c1695d715e03909cc3b89 100644 (file)
@@ -9206,7 +9206,6 @@ static void bpf_overflow_handler(struct perf_event *event,
        int ret = 0;
 
        ctx.regs = perf_arch_bpf_user_pt_regs(regs);
-       preempt_disable();
        if (unlikely(__this_cpu_inc_return(bpf_prog_active) != 1))
                goto out;
        rcu_read_lock();
@@ -9214,7 +9213,6 @@ static void bpf_overflow_handler(struct perf_event *event,
        rcu_read_unlock();
 out:
        __this_cpu_dec(bpf_prog_active);
-       preempt_enable();
        if (!ret)
                return;