Message ID | 20200922070447.1920932-1-kafai@fb.com |
---|---|
State | New |
Headers | show |
Series | [v3,bpf-next,01/11] bpf: Move the PTR_TO_BTF_ID check to check_reg_type() | expand |
On Tue, 22 Sep 2020 at 08:04, Martin KaFai Lau <kafai@fb.com> wrote: > > This patch changes the bpf_sk_assign() to take > ARG_PTR_TO_BTF_ID_SOCK_COMMON such that they will work with the pointer > returned by the bpf_skc_to_*() helpers also. > > The bpf_sk_lookup_assign() is taking ARG_PTR_TO_SOCKET_"OR_NULL". Meaning > it specifically takes a scalar NULL. ARG_PTR_TO_BTF_ID_SOCK_COMMON > does not allow a scalar NULL, so another ARG type is required > for this purpose and another folllow-up patch can be used if > there is such need. > > Signed-off-by: Martin KaFai Lau <kafai@fb.com> Acked-by: Lorenz Bauer <lmb@cloudflare.com>
diff --git a/net/core/filter.c b/net/core/filter.c index 6ab12d8cdd85..063aba8a81e6 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -6221,7 +6221,7 @@ static const struct bpf_func_proto bpf_tcp_gen_syncookie_proto = { BPF_CALL_3(bpf_sk_assign, struct sk_buff *, skb, struct sock *, sk, u64, flags) { - if (flags != 0) + if (!sk || flags != 0) return -EINVAL; if (!skb_at_tc_ingress(skb)) return -EOPNOTSUPP; @@ -6245,7 +6245,8 @@ static const struct bpf_func_proto bpf_sk_assign_proto = { .gpl_only = false, .ret_type = RET_INTEGER, .arg1_type = ARG_PTR_TO_CTX, - .arg2_type = ARG_PTR_TO_SOCK_COMMON, + .arg2_type = ARG_PTR_TO_BTF_ID_SOCK_COMMON, + .arg2_btf_id = &btf_sock_ids[BTF_SOCK_TYPE_SOCK_COMMON], .arg3_type = ARG_ANYTHING, };
This patch changes the bpf_sk_assign() to take ARG_PTR_TO_BTF_ID_SOCK_COMMON such that they will work with the pointer returned by the bpf_skc_to_*() helpers also. The bpf_sk_lookup_assign() is taking ARG_PTR_TO_SOCKET_"OR_NULL". Meaning it specifically takes a scalar NULL. ARG_PTR_TO_BTF_ID_SOCK_COMMON does not allow a scalar NULL, so another ARG type is required for this purpose and another folllow-up patch can be used if there is such need. Signed-off-by: Martin KaFai Lau <kafai@fb.com> --- net/core/filter.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)