aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bonding
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2011-10-24 18:18:09 -0400
committerDavid S. Miller <davem@davemloft.net>2011-10-24 18:18:09 -0400
commit1805b2f04855f07afe3a71d620a68f483b0ed74f (patch)
treeb823b90f37f5404fcaef70f785c70112ca74a329 /drivers/net/bonding
parent78d81d15b74246c7cedf84894434890b33da3907 (diff)
parentf42af6c486aa5ca6ee62800cb45c5b252020509d (diff)
Merge branch 'master' of ra.kernel.org:/pub/scm/linux/kernel/git/davem/net
Diffstat (limited to 'drivers/net/bonding')
-rw-r--r--drivers/net/bonding/bond_main.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 41430baa132..71efff32394 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1432,6 +1432,8 @@ static rx_handler_result_t bond_handle_frame(struct sk_buff **pskb)
1432 struct sk_buff *skb = *pskb; 1432 struct sk_buff *skb = *pskb;
1433 struct slave *slave; 1433 struct slave *slave;
1434 struct bonding *bond; 1434 struct bonding *bond;
1435 void (*recv_probe)(struct sk_buff *, struct bonding *,
1436 struct slave *);
1435 1437
1436 skb = skb_share_check(skb, GFP_ATOMIC); 1438 skb = skb_share_check(skb, GFP_ATOMIC);
1437 if (unlikely(!skb)) 1439 if (unlikely(!skb))
@@ -1445,11 +1447,12 @@ static rx_handler_result_t bond_handle_frame(struct sk_buff **pskb)
1445 if (bond->params.arp_interval) 1447 if (bond->params.arp_interval)
1446 slave->dev->last_rx = jiffies; 1448 slave->dev->last_rx = jiffies;
1447 1449
1448 if (bond->recv_probe) { 1450 recv_probe = ACCESS_ONCE(bond->recv_probe);
1451 if (recv_probe) {
1449 struct sk_buff *nskb = skb_clone(skb, GFP_ATOMIC); 1452 struct sk_buff *nskb = skb_clone(skb, GFP_ATOMIC);
1450 1453
1451 if (likely(nskb)) { 1454 if (likely(nskb)) {
1452 bond->recv_probe(nskb, bond, slave); 1455 recv_probe(nskb, bond, slave);
1453 dev_kfree_skb(nskb); 1456 dev_kfree_skb(nskb);
1454 } 1457 }
1455 } 1458 }