Skip to content
  • Jeff Mahoney's avatar
    [TG3]: netif_carrier_off runs too early; could still be queued when init fails · 59f1741e
    Jeff Mahoney authored
    
    
    Move the netif_carrier_off() call from tg3_init_one()->
    tg3_init_link_config() to tg3_open() as is the convention for most other
    network drivers.
    
    I was getting a panic after a tg3 device failed to initialize due to DMA
    failure.  The oops pointed to the link watch queue with spinlock debugging
    enabled.  Without spinlock debugging, the Oops didn't occur.
    
    I suspect that the link event was getting queued but not executed until
    after the DMA test had failed and the device was freed.  The link event was
    then operating on freed memory, which could contain anything.  With this
    patch applied, the Oops no longer occurs.
    
    [ Based upon feedback from Michael Chan, we move netif_carrier_off()
      to the end of tg3_init_one() instead of moving it to tg3_open() -DaveM ]
    
    Signed-off-by: default avatarJeff Mahoney <jeffm@suse.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    59f1741e