• Eric Dumazet's avatar
    net/hyperv: fix erroneous NETDEV_TX_BUSY use · bb6d5e76
    Eric Dumazet authored
    A driver start_xmit() method cannot free skb and return NETDEV_TX_BUSY,
    since caller is going to reuse freed skb.
    
    This is mostly a revert of commit bf769375 (staging: hv: fix the return
    status of netvsc_start_xmit())
    
    In fact netif_tx_stop_queue() / netif_stop_queue() is needed before
    returning NETDEV_TX_BUSY or you can trigger a ksoftirqd fatal loop.
    
    In case of memory allocation error, only safe way is to drop the packet
    and return NETDEV_TX_OK
    Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
    Cc: "K. Y. Srinivasan" <kys@microsoft.com>
    Cc: Haiyang Zhang <haiyangz@microsoft.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Reviewed-by: default avatarHaiyang Zhang <haiyangz@microsoft.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    bb6d5e76
netvsc_drv.c 12.9 KB