summaryrefslogtreecommitdiffstats
path: root/net/core/dev.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2010-03-23 14:56:33 +0100
committerTakashi Iwai <tiwai@suse.de>2010-03-23 14:56:33 +0100
commit85ae01b2da0ed606a2e8d840aadef90fd30220a1 (patch)
treef9eaa974b88b9db09dab9e5f6876e87d12543fe4 /net/core/dev.c
parent6407d474e6ae6a798fa5ba40b32f508a52de80ff (diff)
parent306ff3e473a970f88680e8355c0900fcab0357e2 (diff)
downloadkernel-crypto-85ae01b2da0ed606a2e8d840aadef90fd30220a1.tar.gz
kernel-crypto-85ae01b2da0ed606a2e8d840aadef90fd30220a1.tar.xz
kernel-crypto-85ae01b2da0ed606a2e8d840aadef90fd30220a1.zip
Merge remote branch 'alsa/devel' into topic/usb
Diffstat (limited to 'net/core/dev.c')
-rw-r--r--net/core/dev.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index bcc490cc945..59d4394d2ce 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2483,6 +2483,7 @@ int netif_receive_skb(struct sk_buff *skb)
{
struct packet_type *ptype, *pt_prev;
struct net_device *orig_dev;
+ struct net_device *master;
struct net_device *null_or_orig;
struct net_device *null_or_bond;
int ret = NET_RX_DROP;
@@ -2503,11 +2504,12 @@ int netif_receive_skb(struct sk_buff *skb)
null_or_orig = NULL;
orig_dev = skb->dev;
- if (orig_dev->master) {
- if (skb_bond_should_drop(skb))
+ master = ACCESS_ONCE(orig_dev->master);
+ if (master) {
+ if (skb_bond_should_drop(skb, master))
null_or_orig = orig_dev; /* deliver only exact match */
else
- skb->dev = orig_dev->master;
+ skb->dev = master;
}
__get_cpu_var(netdev_rx_stat).total++;