struct tls_context *tls_ctx = tls_get_ctx(sk);
        struct tls_sw_context_tx *ctx = tls_sw_ctx_tx(tls_ctx);
        struct tls_rec *rec, *tmp;
+       int pending;
 
        /* Wait for any pending async encryptions to complete */
-       smp_store_mb(ctx->async_notify, true);
-       if (atomic_read(&ctx->encrypt_pending))
+       spin_lock_bh(&ctx->encrypt_compl_lock);
+       ctx->async_notify = true;
+       pending = atomic_read(&ctx->encrypt_pending);
+       spin_unlock_bh(&ctx->encrypt_compl_lock);
+
+       if (pending)
                crypto_wait_req(-EINPROGRESS, &ctx->async_wait);
 
        tls_tx_records(sk, -1);