[TG3]: Fix crash during tg3_init_one().
authorMichael Chan <mchan@broadcom.com>
Sat, 7 Apr 2007 00:35:37 +0000 (17:35 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 7 Apr 2007 00:35:37 +0000 (17:35 -0700)
The driver will crash when the chip has been initialized by EFI before
tg3_init_one().  In this case, the driver will call tg3_chip_reset()
before allocating consistent memory.

The bug is fixed by checking for tp->hw_status before accessing it
during tg3_chip_reset().

Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/tg3.c

index 0acee9f324e92aaf57a53a49fe26dfd4bdf8b119..256969e1300c9f36fa29cff47977dd006dfde452 100644 (file)
@@ -4834,8 +4834,10 @@ static int tg3_chip_reset(struct tg3 *tp)
         * sharing or irqpoll.
         */
        tp->tg3_flags |= TG3_FLAG_CHIP_RESETTING;
-       tp->hw_status->status = 0;
-       tp->hw_status->status_tag = 0;
+       if (tp->hw_status) {
+               tp->hw_status->status = 0;
+               tp->hw_status->status_tag = 0;
+       }
        tp->last_tag = 0;
        smp_mb();
        synchronize_irq(tp->pdev->irq);