cnic: Fix occasional NULL pointer dereference during reboot.
authorMichael Chan <mchan@broadcom.com>
Wed, 27 Jun 2012 15:08:19 +0000 (15:08 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 28 Jun 2012 04:20:08 +0000 (21:20 -0700)
commita2028b2376a858cb68a7fcc129f6508f59b45381
tree133b51113a4f2c9c9c741a1d21fd693477e7ddda
parentc10237e077cef50e925f052e49f3b4fead9d71f9
cnic: Fix occasional NULL pointer dereference during reboot.

We register with bnx2x before we allocate ctx_tbl structure, so it is
possible for bnx2x to call cnic_ctl before the structure is allocated.
This can sometimes cause NULL pointer dereference of cp->ctx_tbl.  We
fix this by adding simple checking for valid state before proceeding.
The cnic_ctl call is RCU protected so we don't have to deal with race
conditions.

Because of the additional checking, we need to finish the shutdown
before clearing the CNIC_UP flag.

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