diff options
Diffstat (limited to 'kernel/bpf/syscall.c')
-rw-r--r-- | kernel/bpf/syscall.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c index b155cd17c1bd..30ebd085790b 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c | |||
@@ -1211,6 +1211,7 @@ static void __bpf_prog_put_rcu(struct rcu_head *rcu) | |||
1211 | static void __bpf_prog_put(struct bpf_prog *prog, bool do_idr_lock) | 1211 | static void __bpf_prog_put(struct bpf_prog *prog, bool do_idr_lock) |
1212 | { | 1212 | { |
1213 | if (atomic_dec_and_test(&prog->aux->refcnt)) { | 1213 | if (atomic_dec_and_test(&prog->aux->refcnt)) { |
1214 | perf_event_bpf_event(prog, PERF_BPF_EVENT_PROG_UNLOAD, 0); | ||
1214 | /* bpf_prog_free_id() must be called first */ | 1215 | /* bpf_prog_free_id() must be called first */ |
1215 | bpf_prog_free_id(prog, do_idr_lock); | 1216 | bpf_prog_free_id(prog, do_idr_lock); |
1216 | bpf_prog_kallsyms_del_all(prog); | 1217 | bpf_prog_kallsyms_del_all(prog); |
@@ -1554,6 +1555,7 @@ static int bpf_prog_load(union bpf_attr *attr, union bpf_attr __user *uattr) | |||
1554 | } | 1555 | } |
1555 | 1556 | ||
1556 | bpf_prog_kallsyms_add(prog); | 1557 | bpf_prog_kallsyms_add(prog); |
1558 | perf_event_bpf_event(prog, PERF_BPF_EVENT_PROG_LOAD, 0); | ||
1557 | return err; | 1559 | return err; |
1558 | 1560 | ||
1559 | free_used_maps: | 1561 | free_used_maps: |