|
@@ -1435,6 +1435,8 @@ static rx_handler_result_t bond_handle_frame(struct sk_buff **pskb)
|
|
|
struct sk_buff *skb = *pskb;
|
|
|
struct slave *slave;
|
|
|
struct bonding *bond;
|
|
|
+ void (*recv_probe)(struct sk_buff *, struct bonding *,
|
|
|
+ struct slave *);
|
|
|
|
|
|
skb = skb_share_check(skb, GFP_ATOMIC);
|
|
|
if (unlikely(!skb))
|
|
@@ -1448,11 +1450,12 @@ static rx_handler_result_t bond_handle_frame(struct sk_buff **pskb)
|
|
|
if (bond->params.arp_interval)
|
|
|
slave->dev->last_rx = jiffies;
|
|
|
|
|
|
- if (bond->recv_probe) {
|
|
|
+ recv_probe = ACCESS_ONCE(bond->recv_probe);
|
|
|
+ if (recv_probe) {
|
|
|
struct sk_buff *nskb = skb_clone(skb, GFP_ATOMIC);
|
|
|
|
|
|
if (likely(nskb)) {
|
|
|
- bond->recv_probe(nskb, bond, slave);
|
|
|
+ recv_probe(nskb, bond, slave);
|
|
|
dev_kfree_skb(nskb);
|
|
|
}
|
|
|
}
|