On Mon, Oct 05, 2026, [email protected] wrote:
> > +           if (nodata && signal_pending(current)) {
> > +                   long timeo = sock_rcvtimeo(sk, flags & MSG_DONTWAIT);
> > +
> > +                   err = sock_intr_errno(timeo);
> > +                   goto recv_end;
> > +           }
>
> [Severity: Medium]
> Can this errno be lost when the empty record that set nodata was decrypted
> asynchronously?

Yes, at this commit, with TLS 1.2 and an async AEAD. The empty
record goes onto rx_list through the async arm, and recv_end then
replaces err with the zero that process_rx_list() returns for
async_copy_bytes == 0.

The same assignment already discards the -EAGAIN from
tls_rx_rec_wait() in that configuration, so a nonblocking reader
gets the zero return before this patch too. But the patch
description promises -EINTR, and at this commit the reader does
not get it.

5/8 stops decrypting empty records asynchronously. In v3 that
change will move into this patch.


-- 
Chuck Lever (Come to NFS bake-a-thon! https://nfsv4bat.org)

Reply via email to