mirror of
https://github.com/SCST-project/scst.git
synced 2026-05-14 09:11:27 +00:00
qla2x00t-32gbit: Fix a race condition
This patch fixes the following kernel complaint: WARNING: CPU: 7 PID: 16514 at kernel/workqueue.c:3031 __flush_work.cold+0x1f/0x29 Workqueue: qla2xxx_wq qla2x00_iocb_work_fn [qla2xxx_scst] RIP: 0010:__flush_work.cold+0x1f/0x29 Call Trace: flush_work+0x14/0x20 qla24xx_do_nack_work+0x84/0x150 [qla2xxx_scst] qla2x00_do_work+0x50b/0x17e0 [qla2xxx_scst] qla2x00_iocb_work_fn+0x96/0x100 [qla2xxx_scst] process_one_work+0x56d/0xac0 worker_thread+0x7a/0x5d0 kthread+0x1bc/0x210 ret_from_fork+0x24/0x30 git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@8569 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
@@ -1174,7 +1174,6 @@ void qlt_unreg_sess(struct fc_port *sess)
|
||||
sess->last_rscn_gen = sess->rscn_gen;
|
||||
sess->last_login_gen = sess->login_gen;
|
||||
|
||||
INIT_WORK(&sess->free_work, qlt_free_session_done);
|
||||
schedule_work(&sess->free_work);
|
||||
}
|
||||
EXPORT_SYMBOL(qlt_unreg_sess);
|
||||
@@ -1279,7 +1278,6 @@ void qlt_schedule_sess_for_deletion(struct fc_port *sess)
|
||||
"Scheduling sess %p for deletion %s\n",
|
||||
sess, wwn_to_str(sess->port_name));
|
||||
|
||||
INIT_WORK(&sess->del_work, qla24xx_delete_sess_fn);
|
||||
WARN_ON(!queue_work(sess->vha->hw->wq, &sess->del_work));
|
||||
}
|
||||
|
||||
@@ -1400,6 +1398,9 @@ static struct fc_port *qlt_create_sess(
|
||||
return NULL;
|
||||
}
|
||||
|
||||
INIT_WORK(&sess->del_work, qla24xx_delete_sess_fn);
|
||||
INIT_WORK(&sess->free_work, qlt_free_session_done);
|
||||
|
||||
spin_lock_irqsave(&ha->tgt.sess_lock, flags);
|
||||
if (!IS_SW_RESV_ADDR(sess->d_id))
|
||||
vha->vha_tgt.qla_tgt->sess_count++;
|
||||
|
||||
Reference in New Issue
Block a user