• Netanel Belgazal's avatar
    net: ena: fix race condition between device reset and link up setup · d18e4f68
    Netanel Belgazal authored
    In rare cases, ena driver would reset and re-start the device,
    for example, in case of misbehaving application that causes
    transmit timeout
    
    The first step in the reset procedure is to stop the Tx traffic by
    calling ena_carrier_off().
    
    After the driver have just started the device reset procedure, device
    happens to send an asynchronous notification (via AENQ) to the driver
    than there was a link change (to link-up state).
    This link change is mapped to a call to netif_carrier_on() which
    re-activates the Tx queues, violating the assumption of no tx traffic
    until device reset is completed, as the reset task might still be in
    the process of queues initialization, leading to an access to
    uninitialized memory.
    Signed-off-by: default avatarNetanel Belgazal <netanel@amazon.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d18e4f68
ena_netdev.h 8.63 KB