Skip to content

Commit

Permalink
[SCSI] bnx2fc: fix panic in bnx2fc_post_io_req
Browse files Browse the repository at this point in the history
System panics while accessing stale pointer - timer_work_queue - in the IO path
before bnx2fc_stop is called. Fix is to destroy the workqueue after the destroy
operation is complete.

Signed-off-by: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
  • Loading branch information
Bhanu Prakash Gollapudi authored and James Bottomley committed Feb 19, 2012
1 parent 9f71af2 commit 2a7b29c
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions drivers/scsi/bnx2fc/bnx2fc_fcoe.c
Original file line number Diff line number Diff line change
Expand Up @@ -1537,6 +1537,7 @@ static void __bnx2fc_destroy(struct bnx2fc_interface *interface)
static int bnx2fc_destroy(struct net_device *netdev)
{
struct bnx2fc_interface *interface = NULL;
struct workqueue_struct *timer_work_queue;
int rc = 0;

rtnl_lock();
Expand All @@ -1549,9 +1550,9 @@ static int bnx2fc_destroy(struct net_device *netdev)
goto netdev_err;
}


destroy_workqueue(interface->timer_work_queue);
timer_work_queue = interface->timer_work_queue;
__bnx2fc_destroy(interface);
destroy_workqueue(timer_work_queue);

netdev_err:
mutex_unlock(&bnx2fc_dev_lock);
Expand Down

0 comments on commit 2a7b29c

Please sign in to comment.