• Michael Ellerman's avatar
    [PATCH] iseries_veth: Cleanup skbs to prevent unregister_netdevice() hanging · b2e0852e
    Michael Ellerman authored
    Hi Andrew, Jeff,
    
    The iseries_veth driver is badly behaved in that it will keep TX packets
    hanging around forever if they're not ACK'ed and the queue never fills up.
    
    This causes the unregister_netdevice code to wait forever when we try to take
    the device down, because there's still skbs around with references to our
    struct net_device.
    
    There's already code to cleanup any un-ACK'ed packets in veth_stop_connection()
    but it's being called after we unregister the net_device, which is too late.
    
    The fix is to rearrange the module exit function so that we cleanup any
    outstanding skbs and then unregister the driver.
    Signed-off-by: default avatarMichael Ellerman <michael@ellerman.id.au>
    b2e0852e
iseries_veth.c 36.1 KB