hv_netvsc: split sub-channel setup into async and sync
authorStephen Hemminger <sthemmin@microsoft.com>
Fri, 29 Jun 2018 21:07:16 +0000 (14:07 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 30 Jun 2018 12:28:36 +0000 (21:28 +0900)
commit3ffe64f1a641b80a82d9ef4efa7a05ce69049871
treef75e61535c1775e4a0f0c31d5832c66c4a08b51b
parent3f76df198288ceec92fc9eddecad1e73c52769b0
hv_netvsc: split sub-channel setup into async and sync

When doing device hotplug the sub channel must be async to avoid
deadlock issues because device is discovered in softirq context.

When doing changes to MTU and number of channels, the setup
must be synchronous to avoid races such as when MTU and device
settings are done in a single ip command.

Reported-by: Thomas Walker <Thomas.Walker@twosigma.com>
Fixes: 8195b1396ec8 ("hv_netvsc: fix deadlock on hotplug")
Fixes: 732e49850c5e ("netvsc: fix race on sub channel creation")
Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/hyperv/hyperv_net.h
drivers/net/hyperv/netvsc.c
drivers/net/hyperv/netvsc_drv.c
drivers/net/hyperv/rndis_filter.c