• Arthur Kiyanovski's avatar
    net: ena: fix race between link up and device initalization · e1f1bd9b
    Arthur Kiyanovski authored
    Fix race condition between ena_update_on_link_change() and
    ena_restore_device().
    
    This race can occur if link notification arrives while the driver
    is performing a reset sequence. In this case link can be set up,
    enabling the device, before it is fully restored. If packets are
    sent at this time, the driver might access uninitialized data
    structures, causing kernel crash.
    
    Move the clearing of ENA_FLAG_ONGOING_RESET and netif_carrier_on()
    after ena_up() to ensure the device is ready when link is set up.
    
    Fixes: d18e4f68 ("net: ena: fix race condition between device reset and link up setup")
    Signed-off-by: default avatarArthur Kiyanovski <akiyano@amazon.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e1f1bd9b
ena_netdev.c 96.6 KB