bpf: sockmap fix msg->sg.size account on ingress skb
authorJohn Fastabend <john.fastabend@gmail.com>
Mon, 13 May 2019 14:19:55 +0000 (07:19 -0700)
committerDaniel Borkmann <daniel@iogearbox.net>
Mon, 13 May 2019 23:31:43 +0000 (01:31 +0200)
When converting a skb to msg->sg we forget to set the size after the
latest ktls/tls code conversion. This patch can be reached by doing
a redir into ingress path from BPF skb sock recv hook. Then trying to
read the size fails.

Fix this by setting the size.

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>
net/core/skmsg.c

index 49d1efa329d74d84826890b2e3e360fa23a508b5..93bffaad21354d4a255a973d03bc7bcdf9477432 100644 (file)
@@ -411,6 +411,7 @@ static int sk_psock_skb_ingress(struct sk_psock *psock, struct sk_buff *skb)
        sk_mem_charge(sk, skb->len);
        copied = skb->len;
        msg->sg.start = 0;
+       msg->sg.size = copied;
        msg->sg.end = num_sge == MAX_MSG_FRAGS ? 0 : num_sge;
        msg->skb = skb;