@@ -6239,6 +6239,9 @@ static int perf_event_set_output(struct perf_event *event,
6239
6239
static int perf_event_set_filter (struct perf_event * event , void __user * arg );
6240
6240
static int perf_copy_attr (struct perf_event_attr __user * uattr ,
6241
6241
struct perf_event_attr * attr );
6242
+ static int __perf_event_set_bpf_prog (struct perf_event * event ,
6243
+ struct bpf_prog * prog ,
6244
+ u64 bpf_cookie );
6242
6245
6243
6246
static long _perf_ioctl (struct perf_event * event , unsigned int cmd , unsigned long arg )
6244
6247
{
@@ -6301,7 +6304,7 @@ static long _perf_ioctl(struct perf_event *event, unsigned int cmd, unsigned lon
6301
6304
if (IS_ERR (prog ))
6302
6305
return PTR_ERR (prog );
6303
6306
6304
- err = perf_event_set_bpf_prog (event , prog , 0 );
6307
+ err = __perf_event_set_bpf_prog (event , prog , 0 );
6305
6308
if (err ) {
6306
6309
bpf_prog_put (prog );
6307
6310
return err ;
@@ -11069,8 +11072,9 @@ static inline bool perf_event_is_tracing(struct perf_event *event)
11069
11072
return false;
11070
11073
}
11071
11074
11072
- int perf_event_set_bpf_prog (struct perf_event * event , struct bpf_prog * prog ,
11073
- u64 bpf_cookie )
11075
+ static int __perf_event_set_bpf_prog (struct perf_event * event ,
11076
+ struct bpf_prog * prog ,
11077
+ u64 bpf_cookie )
11074
11078
{
11075
11079
bool is_kprobe , is_uprobe , is_tracepoint , is_syscall_tp ;
11076
11080
@@ -11108,6 +11112,20 @@ int perf_event_set_bpf_prog(struct perf_event *event, struct bpf_prog *prog,
11108
11112
return perf_event_attach_bpf_prog (event , prog , bpf_cookie );
11109
11113
}
11110
11114
11115
+ int perf_event_set_bpf_prog (struct perf_event * event ,
11116
+ struct bpf_prog * prog ,
11117
+ u64 bpf_cookie )
11118
+ {
11119
+ struct perf_event_context * ctx ;
11120
+ int ret ;
11121
+
11122
+ ctx = perf_event_ctx_lock (event );
11123
+ ret = __perf_event_set_bpf_prog (event , prog , bpf_cookie );
11124
+ perf_event_ctx_unlock (event , ctx );
11125
+
11126
+ return ret ;
11127
+ }
11128
+
11111
11129
void perf_event_free_bpf_prog (struct perf_event * event )
11112
11130
{
11113
11131
if (!event -> prog )
@@ -11130,7 +11148,15 @@ static void perf_event_free_filter(struct perf_event *event)
11130
11148
{
11131
11149
}
11132
11150
11133
- int perf_event_set_bpf_prog (struct perf_event * event , struct bpf_prog * prog ,
11151
+ static int __perf_event_set_bpf_prog (struct perf_event * event ,
11152
+ struct bpf_prog * prog ,
11153
+ u64 bpf_cookie )
11154
+ {
11155
+ return - ENOENT ;
11156
+ }
11157
+
11158
+ int perf_event_set_bpf_prog (struct perf_event * event ,
11159
+ struct bpf_prog * prog ,
11134
11160
u64 bpf_cookie )
11135
11161
{
11136
11162
return - ENOENT ;
0 commit comments