aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorEric Dumazet <eric.dumazet@gmail.com>2010-03-18 21:16:45 -0700
committerDavid S. Miller <davem@davemloft.net>2010-03-18 21:16:45 -0700
commit0641e4fbf2f824faee00ea74c459a088d94905fd (patch)
tree54fdd8bc2e3a928ff0f7621c06e1e604eaf0529c /include
parent54d259d474e1fee6f6bb8f0f1360d85195199ac5 (diff)
downloadkernel_samsung_crespo-0641e4fbf2f824faee00ea74c459a088d94905fd.zip
kernel_samsung_crespo-0641e4fbf2f824faee00ea74c459a088d94905fd.tar.gz
kernel_samsung_crespo-0641e4fbf2f824faee00ea74c459a088d94905fd.tar.bz2
net: Potential null skb->dev dereference
When doing "ifenslave -d bond0 eth0", there is chance to get NULL dereference in netif_receive_skb(), because dev->master suddenly becomes NULL after we tested it. We should use ACCESS_ONCE() to avoid this (or rcu_dereference()) Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r--include/linux/netdevice.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index c79a88b..fa8b476 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -2059,12 +2059,12 @@ static inline void skb_bond_set_mac_by_master(struct sk_buff *skb,
* duplicates except for 802.3ad ETH_P_SLOW, alb non-mcast/bcast, and
* ARP on active-backup slaves with arp_validate enabled.
*/
-static inline int skb_bond_should_drop(struct sk_buff *skb)
+static inline int skb_bond_should_drop(struct sk_buff *skb,
+ struct net_device *master)
{
- struct net_device *dev = skb->dev;
- struct net_device *master = dev->master;
-
if (master) {
+ struct net_device *dev = skb->dev;
+
if (master->priv_flags & IFF_MASTER_ARPMON)
dev->last_rx = jiffies;