X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=drivers%2Fnet%2Fhyperv%2Fnetvsc_drv.c;h=05ee870c3636cca58cac402d7ab98d1d111ad54d;hb=6026e043d09012c6269f9a96a808d52d9c498224;hp=fac44c5c8d0d6fa5f4ced3e267f3b6a5e3f653f2;hpb=4cc5b44b29a9de9b3f841efedaa3f769066c63cc;p=linux.git diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c index fac44c5c8d0d..05ee870c3636 100644 --- a/drivers/net/hyperv/netvsc_drv.c +++ b/drivers/net/hyperv/netvsc_drv.c @@ -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;