csk->wr_max_credits))
                        sk->sk_write_space(sk);
 
-               if (copied >= target && !sk->sk_backlog.tail)
+               if (copied >= target && !READ_ONCE(sk->sk_backlog.tail))
                        break;
 
                if (copied) {
                                break;
                        }
                }
-               if (sk->sk_backlog.tail) {
+               if (READ_ONCE(sk->sk_backlog.tail)) {
                        release_sock(sk);
                        lock_sock(sk);
                        chtls_cleanup_rbuf(sk, copied);
                        break;
                }
 
-               if (sk->sk_backlog.tail) {
+               if (READ_ONCE(sk->sk_backlog.tail)) {
                        /* Do not sleep, just process backlog. */
                        release_sock(sk);
                        lock_sock(sk);
                                      csk->wr_max_credits))
                        sk->sk_write_space(sk);
 
-               if (copied >= target && !sk->sk_backlog.tail)
+               if (copied >= target && !READ_ONCE(sk->sk_backlog.tail))
                        break;
 
                if (copied) {
                        }
                }
 
-               if (sk->sk_backlog.tail) {
+               if (READ_ONCE(sk->sk_backlog.tail)) {
                        release_sock(sk);
                        lock_sock(sk);
                        chtls_cleanup_rbuf(sk, copied);
 
        skb_dst_force(skb);
 
        if (!sk->sk_backlog.tail)
-               sk->sk_backlog.head = skb;
+               WRITE_ONCE(sk->sk_backlog.head, skb);
        else
                sk->sk_backlog.tail->next = skb;
 
-       sk->sk_backlog.tail = skb;
+       WRITE_ONCE(sk->sk_backlog.tail, skb);
        skb->next = NULL;
 }
 
 
 
                /* Well, if we have backlog, try to process it now yet. */
 
-               if (copied >= target && !sk->sk_backlog.tail)
+               if (copied >= target && !READ_ONCE(sk->sk_backlog.tail))
                        break;
 
                if (copied) {
 
                }
                /* Well, if we have backlog, try to process it now yet. */
 
-               if (copied >= target && !sk->sk_backlog.tail)
+               if (copied >= target && !READ_ONCE(sk->sk_backlog.tail))
                        break;
 
                if (copied) {