diff options
author | David S. Miller <davem@davemloft.net> | 2017-01-17 21:19:37 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-01-17 21:19:37 +0100 |
commit | 580bdf5650fff8f66468ce491f8308f1117b7074 (patch) | |
tree | 3570ba1406f8cf492308d07cd88d3e53742a69f2 /drivers/net/hyperv/netvsc_drv.c | |
parent | Merge branch 'mpls-packet-stats' (diff) | |
parent | stmmac: add missing of_node_put (diff) | |
download | linux-580bdf5650fff8f66468ce491f8308f1117b7074.tar.xz linux-580bdf5650fff8f66468ce491f8308f1117b7074.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Diffstat (limited to 'drivers/net/hyperv/netvsc_drv.c')
-rw-r--r-- | drivers/net/hyperv/netvsc_drv.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c index 05374fce7da4..eebeb9378bac 100644 --- a/drivers/net/hyperv/netvsc_drv.c +++ b/drivers/net/hyperv/netvsc_drv.c @@ -659,6 +659,7 @@ int netvsc_recv_callback(struct hv_device *device_obj, * policy filters on the host). Deliver these via the VF * interface in the guest. */ + rcu_read_lock(); vf_netdev = rcu_dereference(net_device_ctx->vf_netdev); if (vf_netdev && (vf_netdev->flags & IFF_UP)) net = vf_netdev; @@ -667,6 +668,7 @@ int netvsc_recv_callback(struct hv_device *device_obj, skb = netvsc_alloc_recv_skb(net, packet, csum_info, *data, vlan_tci); if (unlikely(!skb)) { ++net->stats.rx_dropped; + rcu_read_unlock(); return NVSP_STAT_FAIL; } @@ -696,6 +698,7 @@ int netvsc_recv_callback(struct hv_device *device_obj, * TODO - use NAPI? */ netif_rx(skb); + rcu_read_unlock(); return 0; } |