On Thu, 21 May 2020 14:28:27 +0530 Vinay Kumar Yadav wrote:
> Considering the lock in fix ("pending" is local variable), when writer reads
> pending == 0 [pending = atomic_read(&ctx->encrypt_pending); --> from
> tls_sw_sendmsg()],
> that means encrypt complete() [from tls_encrypt_done()] is already called.
Please indulge me with full sentences. I can't parse this.
> and if pending == 1 [pending = atomic_read(&ctx->encrypt_pending); --> from
> tls_sw_sendmsg()],
> that means writer is going to wait for
> atomic_dec_return(&ctx->decrypt_pending) and
> complete() [from tls_encrypt_done()] to be called atomically.
>
> This way, writer is not going to proceed to encrypt next record on CPU0
> without complete().