]> git.baikalelectronics.ru Git - kernel.git/commit
[SCSI] libfc: Fix panic in fc_exch_recv
authorBhanu Prakash Gollapudi <bprakash@broadcom.com>
Sat, 11 Feb 2012 01:18:51 +0000 (17:18 -0800)
committerJames Bottomley <JBottomley@Parallels.com>
Sun, 19 Feb 2012 15:26:07 +0000 (09:26 -0600)
commit415f3e31e91c726b991e3f7e1d5acd302c4c54ef
treeb13dd159f049a54208d7e6a17735f4e859fa6952
parentf33f667131ab74dab6fb18242d25999a6d73227b
[SCSI] libfc: Fix panic in fc_exch_recv

Adding and removing the host into the zone causes this panic.

BUG: unable to handle kernel NULL pointer dereference at 00000000000000a0
IP: [<ffffffffa0491707>] fc_exch_recv+0xc57/0xe70 [libfc]
Call Trace:
[<ffffffffa050e04b>] bnx2fc_l2_rcv_thread+0x37b/0x430 [bnx2fc]
[<ffffffffa050dcd0>] ? bnx2fc_l2_rcv_thread+0x0/0x430 [bnx2fc]
[<ffffffff81090886>] kthread+0x96/0xa0
[<ffffffff8100c14a>] child_rip+0xa/0x20
[<ffffffff810907f0>] ? kthread+0x0/0xa0
[<ffffffff8100c140>] ? child_rip+0x0/0x20

During fc_exch_reset, the active exchanges are aborted and the exch is deleted.
As part of processing ABTS response, due to 'ep' being NULL, any access to ep in
fc_exch_recv_bls() causes this panic. Fixed to access 'ep' only if non-NULL.

Reviewed-by: Neerav Parikh <neerav.parikh@intel.com>
Signed-off-by: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/libfc/fc_exch.c