Skip to content
  • Michael Chan's avatar
    [TG3]: Flush tg3_reset_task() · 7faa006f
    Michael Chan authored
    
    
    Make sure tg3_reset_task() is flushed in the close and suspend paths
    as noted by Jeff Garzik.
    
    In the close path, calling flush_scheduled_work() may cause deadlock
    if linkwatch_event() is on the workqueue. linkwatch_event() will try
    to get the rtnl_lock() which is already held by tg3_close(). So
    instead, we set a flag in tg3_reset_task() and tg3_close() polls
    the flag until it is cleared.
    
    Signed-off-by: default avatarMichael Chan <mchan@broadcom.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    7faa006f