• stephen hemminger's avatar
    net: allow netif_carrier to be called safely from IRQ · 1821f7cd
    stephen hemminger authored
    As reported by Ben Greer and Froncois Romieu. The code path in
    the netif_carrier code leads it to try and disable
    a late workqueue to reenable it immediately
    netif_carrier_on
    -> linkwatch_fire_event
       -> linkwatch_schedule_work
          -> cancel_delayed_work
             -> del_timer_sync
    
    If __cancel_delayed_work is used instead then there is no
    problem of waiting for running linkwatch_event.
    
    There is a race between linkwatch_event running re-scheduling
    but it is harmless to schedule an extra scan of the linkwatch queue.
    Signed-off-by: default avatarStephen Hemminger <shemminger@vyatta.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    1821f7cd
link_watch.c 5.42 KB