void tls_device_write_space(struct sock *sk, struct tls_context *ctx)
 {
-       if (!sk->sk_write_pending && tls_is_partially_sent_record(ctx)) {
+       if (tls_is_partially_sent_record(ctx)) {
                gfp_t sk_allocation = sk->sk_allocation;
 
+               WARN_ON_ONCE(sk->sk_write_pending);
+
                sk->sk_allocation = GFP_ATOMIC;
                tls_push_partial_record(sk, ctx,
                                        MSG_DONTWAIT | MSG_NOSIGNAL |
 
        struct tls_sw_context_tx *tx_ctx = tls_sw_ctx_tx(ctx);
 
        /* Schedule the transmission if tx list is ready */
-       if (is_tx_ready(tx_ctx) && !sk->sk_write_pending) {
-               /* Schedule the transmission */
-               if (!test_and_set_bit(BIT_TX_SCHEDULED,
-                                     &tx_ctx->tx_bitmask))
-                       schedule_delayed_work(&tx_ctx->tx_work.work, 0);
-       }
+       if (is_tx_ready(tx_ctx) &&
+           !test_and_set_bit(BIT_TX_SCHEDULED, &tx_ctx->tx_bitmask))
+               schedule_delayed_work(&tx_ctx->tx_work.work, 0);
 }
 
 void tls_sw_strparser_arm(struct sock *sk, struct tls_context *tls_ctx)