mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
chelsio/chtls: fix tls record info to user
[ Upstream commit4f3391ce8f] chtls_pt_recvmsg() receives a skb with tls header and subsequent skb with data, need to finalize the data copy whenever next skb with tls header is available. but here current tls header is overwritten by next available tls header, ends up corrupting user buffer data. fixing it by finalizing current record whenever next skb contains tls header. v1->v2: - Improved commit message. Fixes:17a7d24aa8("crypto: chtls - generic handling of data and hdr") Signed-off-by: Vinay Kumar Yadav <vinay.yadav@chelsio.com> Link: https://lore.kernel.org/r/20201022190556.21308-1-vinay.yadav@chelsio.com Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
df2e825b3a
commit
efea090aff
@@ -1549,6 +1549,7 @@ skip_copy:
|
||||
tp->urg_data = 0;
|
||||
|
||||
if ((avail + offset) >= skb->len) {
|
||||
struct sk_buff *next_skb;
|
||||
if (ULP_SKB_CB(skb)->flags & ULPCB_FLAG_TLS_HDR) {
|
||||
tp->copied_seq += skb->len;
|
||||
hws->rcvpld = skb->hdr_len;
|
||||
@@ -1558,8 +1559,10 @@ skip_copy:
|
||||
chtls_free_skb(sk, skb);
|
||||
buffers_freed++;
|
||||
hws->copied_seq = 0;
|
||||
if (copied >= target &&
|
||||
!skb_peek(&sk->sk_receive_queue))
|
||||
next_skb = skb_peek(&sk->sk_receive_queue);
|
||||
if (copied >= target && !next_skb)
|
||||
break;
|
||||
if (ULP_SKB_CB(next_skb)->flags & ULPCB_FLAG_TLS_HDR)
|
||||
break;
|
||||
}
|
||||
} while (len > 0);
|
||||
|
||||
Reference in New Issue
Block a user