• Vincent Chen's avatar
    net: faraday: ftmac100: remove netif_running(netdev) check before disabling interrupts · 426a593e
    Vincent Chen authored
    In the original ftmac100_interrupt(), the interrupts are only disabled when
    the condition "netif_running(netdev)" is true. However, this condition
    causes kerenl hang in the following case. When the user requests to
    disable the network device, kernel will clear the bit __LINK_STATE_START
    from the dev->state and then call the driver's ndo_stop function. Network
    device interrupts are not blocked during this process. If an interrupt
    occurs between clearing __LINK_STATE_START and stopping network device,
    kernel cannot disable the interrupts due to the condition
    "netif_running(netdev)" in the ISR. Hence, kernel will hang due to the
    continuous interruption of the network device.
    
    In order to solve the above problem, the interrupts of the network device
    should always be disabled in the ISR without being restricted by the
    condition "netif_running(netdev)".
    
    [V2]
    Remove unnecessary curly braces.
    Signed-off-by: default avatarVincent Chen <vincentc@andestech.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    426a593e
ftmac100.c 30.9 KB