From: Vakul Garg <[email protected]> Date: Wed, 16 Jan 2019 10:40:16 +0000
> 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: Vakul Garg <[email protected]> > --- > Changes since v1: > > 1. Added comments for function process_rx_list(). > 2. Fixed tls_decrypt_done() to adjust record offset & len only when > decryption is successful. Applied.
