static int perf_event_set_filter(struct perf_event *event, void __user *arg);
 static int perf_copy_attr(struct perf_event_attr __user *uattr,
                          struct perf_event_attr *attr);
+static int __perf_event_set_bpf_prog(struct perf_event *event,
+                                    struct bpf_prog *prog,
+                                    u64 bpf_cookie);
 
 static long _perf_ioctl(struct perf_event *event, unsigned int cmd, unsigned long arg)
 {
                if (IS_ERR(prog))
                        return PTR_ERR(prog);
 
-               err = perf_event_set_bpf_prog(event, prog, 0);
+               err = __perf_event_set_bpf_prog(event, prog, 0);
                if (err) {
                        bpf_prog_put(prog);
                        return err;
        return false;
 }
 
-int perf_event_set_bpf_prog(struct perf_event *event, struct bpf_prog *prog,
-                           u64 bpf_cookie)
+static int __perf_event_set_bpf_prog(struct perf_event *event,
+                                    struct bpf_prog *prog,
+                                    u64 bpf_cookie)
 {
        bool is_kprobe, is_uprobe, is_tracepoint, is_syscall_tp;
 
        return perf_event_attach_bpf_prog(event, prog, bpf_cookie);
 }
 
+int perf_event_set_bpf_prog(struct perf_event *event,
+                           struct bpf_prog *prog,
+                           u64 bpf_cookie)
+{
+       struct perf_event_context *ctx;
+       int ret;
+
+       ctx = perf_event_ctx_lock(event);
+       ret = __perf_event_set_bpf_prog(event, prog, bpf_cookie);
+       perf_event_ctx_unlock(event, ctx);
+
+       return ret;
+}
+
 void perf_event_free_bpf_prog(struct perf_event *event)
 {
        if (!event->prog)
 {
 }
 
-int perf_event_set_bpf_prog(struct perf_event *event, struct bpf_prog *prog,
+static int __perf_event_set_bpf_prog(struct perf_event *event,
+                                    struct bpf_prog *prog,
+                                    u64 bpf_cookie)
+{
+       return -ENOENT;
+}
+
+int perf_event_set_bpf_prog(struct perf_event *event,
+                           struct bpf_prog *prog,
                            u64 bpf_cookie)
 {
        return -ENOENT;