Skip to content

Commit fcf752e

Browse files
borkmannAlexei Starovoitov
authored andcommitted
bpf: Enable perf event rb output for bpf cgroup progs
Currently, connect(), sendmsg(), recvmsg() and bind-related hooks are all lacking perf event rb output in order to push notifications or monitoring events up to user space. Back in commit a5a3a82 ("bpf: add perf event notificaton support for sock_ops"), I've worked with Sowmini to enable them for sock_ops where the context part is not used (as opposed to skbs for example where the packet data can be appended). Make the bpf_sockopt_event_output() helper generic and enable it for mentioned hooks. Signed-off-by: Daniel Borkmann <[email protected]> Signed-off-by: Alexei Starovoitov <[email protected]> Link: https://lore.kernel.org/bpf/69c39daf87e076b31e52473c902e9bfd37559124.1585323121.git.daniel@iogearbox.net
1 parent 0e53d9e commit fcf752e

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

net/core/filter.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4159,17 +4159,17 @@ static const struct bpf_func_proto bpf_get_socket_uid_proto = {
41594159
.arg1_type = ARG_PTR_TO_CTX,
41604160
};
41614161

4162-
BPF_CALL_5(bpf_sockopt_event_output, struct bpf_sock_ops_kern *, bpf_sock,
4163-
struct bpf_map *, map, u64, flags, void *, data, u64, size)
4162+
BPF_CALL_5(bpf_event_output_data, void *, ctx, struct bpf_map *, map, u64, flags,
4163+
void *, data, u64, size)
41644164
{
41654165
if (unlikely(flags & ~(BPF_F_INDEX_MASK)))
41664166
return -EINVAL;
41674167

41684168
return bpf_event_output(map, flags, data, size, NULL, 0, NULL);
41694169
}
41704170

4171-
static const struct bpf_func_proto bpf_sockopt_event_output_proto = {
4172-
.func = bpf_sockopt_event_output,
4171+
static const struct bpf_func_proto bpf_event_output_data_proto = {
4172+
.func = bpf_event_output_data,
41734173
.gpl_only = true,
41744174
.ret_type = RET_INTEGER,
41754175
.arg1_type = ARG_PTR_TO_CTX,
@@ -5968,6 +5968,8 @@ sock_filter_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog)
59685968
return &bpf_get_local_storage_proto;
59695969
case BPF_FUNC_get_socket_cookie:
59705970
return &bpf_get_socket_cookie_sock_proto;
5971+
case BPF_FUNC_perf_event_output:
5972+
return &bpf_event_output_data_proto;
59715973
default:
59725974
return bpf_base_func_proto(func_id);
59735975
}
@@ -5994,6 +5996,8 @@ sock_addr_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog)
59945996
return &bpf_get_socket_cookie_sock_addr_proto;
59955997
case BPF_FUNC_get_local_storage:
59965998
return &bpf_get_local_storage_proto;
5999+
case BPF_FUNC_perf_event_output:
6000+
return &bpf_event_output_data_proto;
59976001
#ifdef CONFIG_INET
59986002
case BPF_FUNC_sk_lookup_tcp:
59996003
return &bpf_sock_addr_sk_lookup_tcp_proto;
@@ -6236,7 +6240,7 @@ sock_ops_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog)
62366240
case BPF_FUNC_get_local_storage:
62376241
return &bpf_get_local_storage_proto;
62386242
case BPF_FUNC_perf_event_output:
6239-
return &bpf_sockopt_event_output_proto;
6243+
return &bpf_event_output_data_proto;
62406244
case BPF_FUNC_sk_storage_get:
62416245
return &bpf_sk_storage_get_proto;
62426246
case BPF_FUNC_sk_storage_delete:

0 commit comments

Comments
 (0)