Commit 00fea930 authored by Joe Eykholt's avatar Joe Eykholt Committed by James Bottomley
Browse files

[SCSI] libfc: fix rport event race between READY and LOGO

When a remote port becomes ready and a LOGO is received before
the READY event is in rport_work waiting on the mutex, the
event is changed to LOGO and the work queued, so both the
calls to rport_work see the LOGO event, and both try to do
the list_del(), causing a crash.

Don't change the event if it is already set.
Signed-off-by: default avatarJoe Eykholt <>
Signed-off-by: default avatarRobert Love <>
Signed-off-by: default avatarJames Bottomley <>
parent 9e9d0452
......@@ -1267,9 +1267,7 @@ static void fc_rport_recv_logo_req(struct fc_rport_priv *rdata,
rdata->event = RPORT_EV_LOGO;
fc_rport_state_enter(rdata, RPORT_ST_DELETE);
queue_work(rport_event_queue, &rdata->event_work);
fc_rport_enter_delete(rdata, RPORT_EV_LOGO);
lport->tt.seq_els_rsp_send(sp, ELS_LS_ACC, NULL);
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment