Re: [PATCH v5 bpf-next 08/11] bpf: Support BPF_FUNC_get_socket_cookie() for BPF_PROG_TYPE_SK_REUSEPORT.

From: Martin KaFai Lau
Date: Fri May 14 2021 - 21:17:24 EST


On Mon, May 10, 2021 at 12:44:30PM +0900, Kuniyuki Iwashima wrote:
> diff --git a/net/core/filter.c b/net/core/filter.c
> index cae56d08a670..3d0f989f5d38 100644
> --- a/net/core/filter.c
> +++ b/net/core/filter.c
> @@ -10135,6 +10135,8 @@ sk_reuseport_func_proto(enum bpf_func_id func_id,
> return &sk_reuseport_load_bytes_proto;
> case BPF_FUNC_skb_load_bytes_relative:
> return &sk_reuseport_load_bytes_relative_proto;
> + case BPF_FUNC_get_socket_cookie:
> + return &bpf_get_socket_ptr_cookie_proto;
> default:
> return bpf_base_func_proto(func_id);
> }
> @@ -10164,6 +10166,10 @@ sk_reuseport_is_valid_access(int off, int size,
> case offsetof(struct sk_reuseport_md, hash):
> return size == size_default;
>
> + case offsetof(struct sk_reuseport_md, sk):
> + info->reg_type = ARG_PTR_TO_SOCKET;
s/ARG_PTR_TO_SOCKET/PTR_TO_SOCKET/

> + return size == sizeof(__u64);
> +
> /* Fields that allow narrowing */
> case bpf_ctx_range(struct sk_reuseport_md, eth_protocol):
> if (size < sizeof_field(struct sk_buff, protocol))