lkml.org 
[lkml]   [2020]   [Nov]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 009/191] chelsio/chtls: fix tls record info to user
    Date
    From: Vinay Kumar Yadav <vinay.yadav@chelsio.com>

    [ Upstream commit 4f3391ce8f5a69e7e6d66d0a3fc654eb6dbdc919 ]

    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: 17a7d24aa89d ("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>
    ---
    drivers/crypto/chelsio/chtls/chtls_io.c | 7 +++++--
    1 file changed, 5 insertions(+), 2 deletions(-)

    --- a/drivers/crypto/chelsio/chtls/chtls_io.c
    +++ b/drivers/crypto/chelsio/chtls/chtls_io.c
    @@ -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);

    \
     
     \ /
      Last update: 2020-11-03 22:03    [W:2.891 / U:0.532 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site