diff options
author | David S. Miller <davem@davemloft.net> | 2022-11-16 12:48:44 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2022-11-16 12:48:44 +0000 |
commit | ca5ebbfec31487a208d9e0b13a99dbb738a3281b (patch) | |
tree | 698b6c7d56109d7a1b2b09f5d4041f7c0237ba21 /include/net/dst.h | |
parent | 68d268d089314b7c9c9754388a9a301175287b1a (diff) | |
parent | c4794d22251b979b12a6c8e2d3848b662a44fdb6 (diff) |
Merge branch 'net-atomic-dev-stats'
Eric Dumazet says:
====================
net: add atomic dev->stats infra
Long standing KCSAN issues are caused by data-race around
some dev->stats changes.
Most performance critical paths already use per-cpu
variables, or per-queue ones.
It is reasonable (and more correct) to use atomic operations
for the slow paths.
First patch adds the infrastructure, then three patches address
the most common paths that syzbot is playing with.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/dst.h')
-rw-r--r-- | include/net/dst.h | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/include/net/dst.h b/include/net/dst.h index 00b479ce6b99..d67fda89cd0f 100644 --- a/include/net/dst.h +++ b/include/net/dst.h @@ -356,9 +356,8 @@ static inline void __skb_tunnel_rx(struct sk_buff *skb, struct net_device *dev, static inline void skb_tunnel_rx(struct sk_buff *skb, struct net_device *dev, struct net *net) { - /* TODO : stats should be SMP safe */ - dev->stats.rx_packets++; - dev->stats.rx_bytes += skb->len; + DEV_STATS_INC(dev, rx_packets); + DEV_STATS_ADD(dev, rx_bytes, skb->len); __skb_tunnel_rx(skb, dev, net); } |