| .. | .. |
|---|
| 57 | 57 | unsigned long now = jiffies; |
|---|
| 58 | 58 | |
|---|
| 59 | 59 | /* avoid dirtying neighbour */ |
|---|
| 60 | | - if (n->confirmed != now) |
|---|
| 61 | | - n->confirmed = now; |
|---|
| 60 | + if (READ_ONCE(n->confirmed) != now) |
|---|
| 61 | + WRITE_ONCE(n->confirmed, now); |
|---|
| 62 | 62 | } |
|---|
| 63 | 63 | rcu_read_unlock_bh(); |
|---|
| 64 | 64 | } |
|---|
| .. | .. |
|---|
| 71 | 71 | const unsigned char *src_hw, const unsigned char *th); |
|---|
| 72 | 72 | int arp_mc_map(__be32 addr, u8 *haddr, struct net_device *dev, int dir); |
|---|
| 73 | 73 | void arp_ifdown(struct net_device *dev); |
|---|
| 74 | +int arp_invalidate(struct net_device *dev, __be32 ip, bool force); |
|---|
| 74 | 75 | |
|---|
| 75 | 76 | struct sk_buff *arp_create(int type, int ptype, __be32 dest_ip, |
|---|
| 76 | 77 | struct net_device *dev, __be32 src_ip, |
|---|