• D
    tls: fix waitall behavior in tls_sw_recvmsg · 06030dba
    Daniel Borkmann 提交于
    Current behavior in tls_sw_recvmsg() is to wait for incoming tls
    messages and copy up to exactly len bytes of data that the user
    provided. This is problematic in the sense that i) if no packet
    is currently queued in strparser we keep waiting until one has been
    processed and pushed into tls receive layer for tls_wait_data() to
    wake up and push the decrypted bits to user space. Given after
    tls decryption, we're back at streaming data, use sock_rcvlowat()
    hint from tcp socket instead. Retain current behavior with MSG_WAITALL
    flag and otherwise use the hint target for breaking the loop and
    returning to application. This is done if currently no ctx->recv_pkt
    is ready, otherwise continue to process it from our strparser
    backlog.
    
    Fixes: c46234eb ("tls: RX path for ktls")
    Signed-off-by: NDaniel Borkmann <daniel@iogearbox.net>
    Acked-by: NDave Watson <davejwatson@fb.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    06030dba
tls_sw.c 29.6 KB