• Arthur Kiyanovski's avatar
    net: ena: Fix undefined state when tx request id is out of bounds · c255a34e
    Arthur Kiyanovski authored
    ena_com_tx_comp_req_id_get() checks the req_id of a received completion,
    and if it is out of bounds returns -EINVAL. This is a sign that
    something is wrong with the device and it needs to be reset.
    
    The current code does not reset the device in this case, which leaves
    the driver in an undefined state, where this completion is not properly
    handled.
    
    This commit adds a call to handle_invalid_req_id() in ena_clean_tx_irq()
    and ena_clean_xdp_irq() which resets the device to fix the issue.
    
    This commit also removes unnecessary request id checks from
    validate_tx_req_id() and validate_xdp_req_id(). This check is unneeded
    because it was already performed in ena_com_tx_comp_req_id_get(), which
    is called right before these functions.
    
    Fixes: 548c4940 ("net: ena: Implement XDP_TX action")
    Signed-off-by: default avatarShay Agroskin <shayagr@amazon.com>
    Signed-off-by: default avatarArthur Kiyanovski <akiyano@amazon.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    c255a34e
ena_netdev.c 125 KB