aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/sock.c
diff options
context:
space:
mode:
authorVakul Garg <vakul.garg@nxp.com>2019-01-16 10:40:16 +0000
committerDavid S. Miller <davem@davemloft.net>2019-01-17 14:20:40 -0800
commit692d7b5d1f9125a1cf0595e979e3b5fb7210547e (patch)
treeeec9d65c6440f10cdbefa4d329e3a425babc5456 /net/core/sock.c
parentMerge branch 'dsa-lantiq_gswip-probe-fixes-and-remove-cleanup' (diff)
downloadlinux-dev-692d7b5d1f9125a1cf0595e979e3b5fb7210547e.tar.xz
linux-dev-692d7b5d1f9125a1cf0595e979e3b5fb7210547e.zip
tls: Fix recvmsg() to be able to peek across multiple records
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 <vakul.garg@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/sock.c')
0 files changed, 0 insertions, 0 deletions