• Dexuan Cui's avatar
    vmbus: fix subchannel removal · 601cdaed
    Dexuan Cui authored
    [ Upstream commit b5679ceb ]
    
    The changes to split ring allocation from open/close, broke
    the cleanup of subchannels. This resulted in problems using
    uio on network devices because the subchannel was left behind
    when the network device was unbound.
    
    The cause was in the disconnect logic which used list splice
    to move the subchannel list into a local variable. This won't
    work because the subchannel list is needed later during the
    process of the rescind messages (relid2channel).
    
    The fix is to just leave the subchannel list in place
    which is what the original code did. The list is cleaned
    up later when the host rescind is processed.
    
    Without the fix, we have a lot of "hang" issues in netvsc when we
    try to change the NIC's MTU, set the number of channels, etc.
    
    Fixes: ae6935ed ("vmbus: split ring buffer allocation from open")
    Cc: stable@vger.kernel.org
    Signed-off-by: 's avatarStephen Hemminger <sthemmin@microsoft.com>
    Signed-off-by: 's avatarDexuan Cui <decui@microsoft.com>
    Signed-off-by: 's avatarSasha Levin <sashal@kernel.org>
    601cdaed
Name
Last commit
Last update
..
Kconfig Loading commit data...
Makefile Loading commit data...
channel.c Loading commit data...
channel_mgmt.c Loading commit data...
connection.c Loading commit data...
hv.c Loading commit data...
hv_balloon.c Loading commit data...
hv_fcopy.c Loading commit data...
hv_kvp.c Loading commit data...
hv_snapshot.c Loading commit data...
hv_trace.c Loading commit data...
hv_trace.h Loading commit data...
hv_trace_balloon.h Loading commit data...
hv_util.c Loading commit data...
hv_utils_transport.c Loading commit data...
hv_utils_transport.h Loading commit data...
hyperv_vmbus.h Loading commit data...
ring_buffer.c Loading commit data...
vmbus_drv.c Loading commit data...