41 lines
1.2 KiB
Diff
41 lines
1.2 KiB
Diff
From: Ben Hutchings <ben@decadent.org.uk>
|
|
Date: Thu, 26 Oct 2017 22:38:57 +0200
|
|
Subject: Revert "bpf: one perf event close won't free bpf program attached ..."
|
|
Forwarded: not-needed
|
|
|
|
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.
|
|
|
|
---
|
|
--- a/include/linux/trace_events.h
|
|
+++ b/include/linux/trace_events.h
|
|
@@ -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 *);
|
|
--- a/kernel/events/core.c
|
|
+++ b/kernel/events/core.c
|
|
@@ -8126,7 +8126,6 @@ static int perf_event_set_bpf_prog(struc
|
|
}
|
|
}
|
|
event->tp_event->prog = prog;
|
|
- event->tp_event->bpf_prog_owner = event;
|
|
|
|
return 0;
|
|
}
|
|
@@ -8141,7 +8140,7 @@ static void perf_event_free_bpf_prog(str
|
|
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);
|
|
}
|