]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/net/hyperv/netvsc_drv.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[linux.git] / drivers / net / hyperv / netvsc_drv.c
index fac44c5c8d0d6fa5f4ced3e267f3b6a5e3f653f2..05ee870c3636cca58cac402d7ab98d1d111ad54d 100644 (file)
@@ -1578,7 +1578,12 @@ static void netvsc_link_change(struct work_struct *w)
        bool notify = false, reschedule = false;
        unsigned long flags, next_reconfig, delay;
 
-       rtnl_lock();
+       /* if changes are happening, comeback later */
+       if (!rtnl_trylock()) {
+               schedule_delayed_work(&ndev_ctx->dwork, LINKCHANGE_INT);
+               return;
+       }
+
        net_device = rtnl_dereference(ndev_ctx->nvdev);
        if (!net_device)
                goto out_unlock;