• Vakul Garg's avatar
    tls: Fix recvmsg() to be able to peek across multiple records · 692d7b5d
    Vakul Garg authored
    This fixes recvmsg() to be able to peek across multiple tls records.
    Without this patch, the tls's selftests test case
    'recv_peek_large_buf_mult_recs' fails. Each tls receive context now
    maintains a 'rx_list' to retain incoming skb carrying tls records. If a
    tls record needs to be retained e.g. for peek case or for the case when
    the buffer passed to recvmsg() has a length smaller than decrypted
    record length, then it is added to 'rx_list'. Additionally, records are
    added in 'rx_list' if the crypto operation runs in async mode. The
    records are dequeued from 'rx_list' after the decrypted data is consumed
    by copying into the buffer passed to recvmsg(). In case, the MSG_PEEK
    flag is used in recvmsg(), then records are not consumed or removed
    from the 'rx_list'.
    Signed-off-by: default avatarVakul Garg <vakul.garg@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    692d7b5d
tls_sw.c 52.8 KB