OSDN Git Service

bpf: Allow bpf_current_task_under_cgroup in interrupt
authorTeng Qin <qinteng@fb.com>
Sun, 29 Apr 2018 06:39:29 +0000 (23:39 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Sun, 29 Apr 2018 16:18:04 +0000 (09:18 -0700)
Currently, the bpf_current_task_under_cgroup helper has a check where if
the BPF program is running in_interrupt(), it will return -EINVAL. This
prevents the helper to be used in many useful scenarios, particularly
BPF programs attached to Perf Events.

This commit removes the check. Tested a few NMI (Perf Event) and some
softirq context, the helper returns the correct result.

Signed-off-by: Teng Qin <qinteng@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
kernel/trace/bpf_trace.c

index 46d866e..ce2cbbf 100644 (file)
@@ -475,8 +475,6 @@ BPF_CALL_2(bpf_current_task_under_cgroup, struct bpf_map *, map, u32, idx)
        struct bpf_array *array = container_of(map, struct bpf_array, map);
        struct cgroup *cgrp;
 
-       if (unlikely(in_interrupt()))
-               return -EINVAL;
        if (unlikely(idx >= array->map.max_entries))
                return -E2BIG;