diff options
author | John Fastabend <john.fastabend@gmail.com> | 2019-05-13 07:19:55 -0700 |
---|---|---|
committer | Daniel Borkmann <daniel@iogearbox.net> | 2019-05-14 01:31:43 +0200 |
commit | cabede8b4f2b746232aa25730a0b752de1cb82ca (patch) | |
tree | e258b4fb9bfab58874ce7af66f37af4e50f3d949 /net/core | |
parent | c42253cc88206fd0e9868c8b2fd7f9e79f9e0e03 (diff) | |
download | linux-stable-cabede8b4f2b746232aa25730a0b752de1cb82ca.tar.gz linux-stable-cabede8b4f2b746232aa25730a0b752de1cb82ca.tar.bz2 linux-stable-cabede8b4f2b746232aa25730a0b752de1cb82ca.zip |
bpf: sockmap fix msg->sg.size account on ingress skb
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>
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/skmsg.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/core/skmsg.c b/net/core/skmsg.c index 49d1efa329d7..93bffaad2135 100644 --- a/net/core/skmsg.c +++ b/net/core/skmsg.c @@ -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; |