Commit d800a7b3 authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

tls: rx: device: don't try to copy too much on detach



Another device offload bug, we use the length of the output
skb as an indication of how much data to copy. But that skb
is sized to offset + record length, and we start from offset.
So we end up double-counting the offset which leads to
skb_copy_bits() returning -EFAULT.

Reported-by: default avatarTariq Toukan <tariqt@nvidia.com>
Fixes: 84c61fe1 ("tls: rx: do not use the standard strparser")
Tested-by: default avatarRan Rozenstein <ranro@nvidia.com>
Link: https://lore.kernel.org/r/20220809175544.354343-2-kuba@kernel.org


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 86b259f6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ static struct sk_buff *tls_strp_msg_make_copy(struct tls_strparser *strp)
	struct sk_buff *skb;
	int i, err, offset;

	skb = alloc_skb_with_frags(0, strp->anchor->len, TLS_PAGE_ORDER,
	skb = alloc_skb_with_frags(0, strp->stm.full_len, TLS_PAGE_ORDER,
				   &err, strp->sk->sk_allocation);
	if (!skb)
		return NULL;