• David Arinzon's avatar
    net: ena: Fix incorrect descriptor free behavior · bf02d9fe
    David Arinzon authored
    ENA has two types of TX queues:
    - queues which only process TX packets arriving from the network stack
    - queues which only process TX packets forwarded to it by XDP_REDIRECT
      or XDP_TX instructions
    
    The ena_free_tx_bufs() cycles through all descriptors in a TX queue
    and unmaps + frees every descriptor that hasn't been acknowledged yet
    by the device (uncompleted TX transactions).
    The function assumes that the processed TX queue is necessarily from
    the first category listed above and ends up using napi_consume_skb()
    for descriptors belonging to an XDP specific queue.
    
    This patch solves a bug in which, in case of a VF reset, the
    descriptors aren't freed correctly, leading to crashes.
    
    Fixes: 548c4940 ("net: ena: Implement XDP_TX action")
    Signed-off-by: default avatarShay Agroskin <shayagr@amazon.com>
    Signed-off-by: default avatarDavid Arinzon <darinzon@amazon.com>
    Reviewed-by: default avatarShannon Nelson <shannon.nelson@amd.com>
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    bf02d9fe
ena_netdev.c 116 KB