unsigned long now = jiffies;
 
                /* avoid dirtying neighbour */
-               if (n->confirmed != now)
-                       n->confirmed = now;
+               if (READ_ONCE(n->confirmed) != now)
+                       WRITE_ONCE(n->confirmed, now);
        }
        rcu_read_unlock_bh();
 }
 
                unsigned long now = jiffies;
 
                /* avoid dirtying neighbour */
-               if (n->confirmed != now)
-                       n->confirmed = now;
+               if (READ_ONCE(n->confirmed) != now)
+                       WRITE_ONCE(n->confirmed, now);
        }
        rcu_read_unlock_bh();
 }
                unsigned long now = jiffies;
 
                /* avoid dirtying neighbour */
-               if (n->confirmed != now)
-                       n->confirmed = now;
+               if (READ_ONCE(n->confirmed) != now)
+                       WRITE_ONCE(n->confirmed, now);
        }
        rcu_read_unlock_bh();
 }
 
 
 static inline void sk_dst_confirm(struct sock *sk)
 {
-       if (!sk->sk_dst_pending_confirm)
-               sk->sk_dst_pending_confirm = 1;
+       if (!READ_ONCE(sk->sk_dst_pending_confirm))
+               WRITE_ONCE(sk->sk_dst_pending_confirm, 1);
 }
 
 static inline void sock_confirm_neigh(struct sk_buff *skb, struct neighbour *n)
                unsigned long now = jiffies;
 
                /* avoid dirtying neighbour */
-               if (n->confirmed != now)
-                       n->confirmed = now;
-               if (sk && sk->sk_dst_pending_confirm)
-                       sk->sk_dst_pending_confirm = 0;
+               if (READ_ONCE(n->confirmed) != now)
+                       WRITE_ONCE(n->confirmed, now);
+               if (sk && READ_ONCE(sk->sk_dst_pending_confirm))
+                       WRITE_ONCE(sk->sk_dst_pending_confirm, 0);
        }
 }