From: Stephen Hemminger <stephen@xxxxxxxxxxxxxxxxxx> Date: Wed, 6 Sep 2017 13:53:05 -0700 > When a virtual device is added dynamically (via host console), then > the vmbus sends an offer message for the primary channel. The processing > of this message for networking causes the network device to then > initialize the sub channels. > > The problem is that setting up the sub channels needs to wait until > the subsequent subchannel offers have been processed. These offers > come in on the same ring buffer and work queue as where the primary > offer is being processed; leading to a deadlock. > > This did not happen in older kernels, because the sub channel waiting > logic was broken (it wasn't really waiting). > > The solution is to do the sub channel setup in its own work queue > context that is scheduled by the primary channel setup; and then > happens later. > > Fixes: 732e49850c5e ("netvsc: fix race on sub channel creation") > Reported-by: Dexuan Cui <decui@xxxxxxxxxxxxx> > Signed-off-by: Stephen Hemminger <sthemmin@xxxxxxxxxxxxx> > --- > v2 - fix module removal race with new work queue Applied. _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel