On Mon, Aug 3, 2026, at 6:47 PM, Jakub Kicinski wrote:
> On Sun, 26 Jul 2026 20:33:33 -0400 Chuck Lever wrote:
>> -            /* Do not use async mode if record is non-data */
>> +            /* Do not use async mode if record is non-data, or if it
>> +             * is empty: the receive loop frees an empty record's skb,
>> +             * so its decryption must have completed.
>> +             */
>>              if (tlm->control == TLS_RECORD_TYPE_DATA)
>> -                    darg.async = ctx->async_capable;
>> +                    darg.async = ctx->async_capable && to_decrypt;
>
> I vaguely recall that we depend on all records being async
> uniformly within a single recvmsg call

That holds, but it keys off the accumulated async flag rather than
darg.async, so a synchronous record among async ones is still queued
on rx_list. Empty records return before that block and copy nothing.


-- 
Chuck Lever

Reply via email to