|
@@ -754,8 +754,8 @@ static ssize_t macvtap_get_user(struct macvtap_queue *q, struct msghdr *m,
|
|
|
|
|
|
skb_probe_transport_header(skb, ETH_HLEN);
|
|
|
|
|
|
- rcu_read_lock_bh();
|
|
|
- vlan = rcu_dereference_bh(q->vlan);
|
|
|
+ rcu_read_lock();
|
|
|
+ vlan = rcu_dereference(q->vlan);
|
|
|
/* copy skb_ubuf_info for callback when skb has no error */
|
|
|
if (zerocopy) {
|
|
|
skb_shinfo(skb)->destructor_arg = m->msg_control;
|
|
@@ -766,7 +766,7 @@ static ssize_t macvtap_get_user(struct macvtap_queue *q, struct msghdr *m,
|
|
|
macvlan_start_xmit(skb, vlan->dev);
|
|
|
else
|
|
|
kfree_skb(skb);
|
|
|
- rcu_read_unlock_bh();
|
|
|
+ rcu_read_unlock();
|
|
|
|
|
|
return total_len;
|
|
|
|
|
@@ -774,11 +774,11 @@ err_kfree:
|
|
|
kfree_skb(skb);
|
|
|
|
|
|
err:
|
|
|
- rcu_read_lock_bh();
|
|
|
- vlan = rcu_dereference_bh(q->vlan);
|
|
|
+ rcu_read_lock();
|
|
|
+ vlan = rcu_dereference(q->vlan);
|
|
|
if (vlan)
|
|
|
vlan->dev->stats.tx_dropped++;
|
|
|
- rcu_read_unlock_bh();
|
|
|
+ rcu_read_unlock();
|
|
|
|
|
|
return err;
|
|
|
}
|
|
@@ -854,11 +854,11 @@ static ssize_t macvtap_put_user(struct macvtap_queue *q,
|
|
|
copied += len;
|
|
|
|
|
|
done:
|
|
|
- rcu_read_lock_bh();
|
|
|
- vlan = rcu_dereference_bh(q->vlan);
|
|
|
+ rcu_read_lock();
|
|
|
+ vlan = rcu_dereference(q->vlan);
|
|
|
if (vlan)
|
|
|
macvlan_count_rx(vlan, copied - vnet_hdr_len, ret == 0, 0);
|
|
|
- rcu_read_unlock_bh();
|
|
|
+ rcu_read_unlock();
|
|
|
|
|
|
return ret ? ret : copied;
|
|
|
}
|