Revert "bpf: one perf event close won't free bpf program attached ..."
authorBen Hutchings <ben@decadent.org.uk>
Thu, 26 Oct 2017 20:38:57 +0000 (22:38 +0200)
committerBen Hutchings <ben@decadent.org.uk>
Thu, 16 Nov 2017 21:04:10 +0000 (21:04 +0000)
This reverts commit dcc738d393156dd29ed961ecefe13d96ed5f782f, which was
commit ec9dd352d591f0c90402ec67a317c1ed4fb2e638 upstream.  It introduces
an ABI break that's not easily avoidable.  The bug it fixes doesn't seem
to have any security impact.

Gbp-Pq: Topic debian
Gbp-Pq: Name revert-bpf-one-perf-event-close-won-t-free-bpf-program-atta.patch

include/linux/trace_events.h
kernel/events/core.c

index 60248d644b6f9e8081a0b0ae497113e7b96938b8..5012b524283d2d59da5b0f954c242a605a31ee4d 100644 (file)
@@ -277,7 +277,6 @@ struct trace_event_call {
        int                             perf_refcount;
        struct hlist_head __percpu      *perf_events;
        struct bpf_prog                 *prog;
-       struct perf_event               *bpf_prog_owner;
 
        int     (*perf_perm)(struct trace_event_call *,
                             struct perf_event *);
index f7051dfea20db37324a9d1c624cc95169b260cf7..8137820c6cda286c9a47f5d503aefee23cadff7e 100644 (file)
@@ -8128,7 +8128,6 @@ static int perf_event_set_bpf_prog(struct perf_event *event, u32 prog_fd)
                }
        }
        event->tp_event->prog = prog;
-       event->tp_event->bpf_prog_owner = event;
 
        return 0;
 }
@@ -8143,7 +8142,7 @@ static void perf_event_free_bpf_prog(struct perf_event *event)
                return;
 
        prog = event->tp_event->prog;
-       if (prog && event->tp_event->bpf_prog_owner == event) {
+       if (prog) {
                event->tp_event->prog = NULL;
                bpf_prog_put(prog);
        }