lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <1339335497.6001.478.camel@edumazet-glaptop> Date: Sun, 10 Jun 2012 15:38:17 +0200 From: Eric Dumazet <eric.dumazet@...il.com> To: Hong zhi guo <honkiko@...il.com> Cc: davem@...emloft.net, Denys Fedoryshchenko <denys@...p.net.lb>, Benjamin LaHaise <bcrl@...ck.org>, Francois Romieu <romieu@...zoreil.com>, netdev@...r.kernel.org, linux-kernel@...r.kernel.org Subject: Re: Deadlock, L2TP over IP are not working, 3.4.1 On Sun, 2012-06-10 at 15:31 +0200, Eric Dumazet wrote: > include/linux/netdevice.h | 40 ++++++++++++++++++++++++++++-------- > net/l2tp/l2tp_eth.c | 29 +++++++++++++------------- > 2 files changed, 47 insertions(+), 22 deletions(-) > > diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h > index d94cb14..1dee75a 100644 > --- a/include/linux/netdevice.h > +++ b/include/linux/netdevice.h > @@ -171,14 +171,38 @@ static inline bool dev_xmit_complete(int rc) > */ > > struct net_device_stats { > - unsigned long rx_packets; > - unsigned long tx_packets; > - unsigned long rx_bytes; > - unsigned long tx_bytes; > - unsigned long rx_errors; > - unsigned long tx_errors; > - unsigned long rx_dropped; > - unsigned long tx_dropped; > + union { > + unsigned long rx_packets; > + atomic_long_t rx_packets_atomic; > + }; > + union { > + unsigned long tx_packets; > + atomic_long_t tx_packets_atomic; > + }; > + union { > + unsigned long rx_bytes; > + atomic_long_t rx_bytes_atomic; > + }; > + union { > + unsigned long tx_bytes; > + atomic_long_t tx_bytes_atomic; > + }; > + union { > + unsigned long rx_errors; > + atomic_long_t rx_errors_atomic; > + }; > + union { > + unsigned long tx_errors; > + atomic_long_t tx_errors_atomic; > + }; > + union { > + unsigned long rx_dropped; > + atomic_long_t rx_dropped_atomic; > + }; > + union { > + unsigned long tx_dropped; > + atomic_long_t tx_dropped_atomic; > + }; Other choice would be to have a new structure struct net_device_atomic_stats { atomic_long_t rx_packets; atomic_long_t tx_packets; atomic_long_t rx_bytes; atomic_long_t tx_bytes; atomic_long_t rx_errors; atomic_long_t tx_errors; atomic_long_t rx_dropped; atomic_long_t tx_dropped; ... }; and to union it in : struct net_device { ... union { struct net_device_stats stats; struct net_device_atomic_stats atom_stats; }; ... }; -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists