bpf: sockmap, only create entry if ulp is not already enabled
Sockmap does not currently support adding sockets after TLS has been enabled. There never was a real use case for this so it was never added. But, we lost the test for ULP at some point so add it here and fail the socket insert if TLS is enabled. Future work could make sockmap support this use case but fixup the bug here. Fixes: 604326b41a6fb ("bpf, sockmap: convert to generic sk_msg interface") Signed-off-by: John Fastabend <john.fastabend@gmail.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
This commit is contained in:
committed by
Daniel Borkmann
parent
2bb90e5cc9
commit
0e858739c2
@ -334,6 +334,7 @@ static int sock_map_update_common(struct bpf_map *map, u32 idx,
|
||||
struct sock *sk, u64 flags)
|
||||
{
|
||||
struct bpf_stab *stab = container_of(map, struct bpf_stab, map);
|
||||
struct inet_connection_sock *icsk = inet_csk(sk);
|
||||
struct sk_psock_link *link;
|
||||
struct sk_psock *psock;
|
||||
struct sock *osk;
|
||||
@ -344,6 +345,8 @@ static int sock_map_update_common(struct bpf_map *map, u32 idx,
|
||||
return -EINVAL;
|
||||
if (unlikely(idx >= map->max_entries))
|
||||
return -E2BIG;
|
||||
if (unlikely(icsk->icsk_ulp_data))
|
||||
return -EINVAL;
|
||||
|
||||
link = sk_psock_init_link();
|
||||
if (!link)
|
||||
|
Reference in New Issue
Block a user