cfiscsi_done: Free the dummy PDU earlier.

The dummy PDU needs to be freed before marking task abortion complete
as otherwise cfiscsi_session_terminate_tasks can return and destroy
the session in another thread before the PDU is freed.

Fixes:		2e8d1a5525 iscsi: Allocate a dummy PDU for the internal nexus reset task.
Sponsored by:	Chelsio Communications
Differential Revision:	https://reviews.freebsd.org/D34176
This commit is contained in:
John Baldwin 2022-02-07 12:55:08 -08:00
parent c227269e2f
commit a3d71fffa7

View file

@ -3062,11 +3062,11 @@ cfiscsi_done(union ctl_io *io)
/*
* Implicit task termination has just completed; nothing to do.
*/
icl_pdu_free(request);
cs->cs_tasks_aborted = true;
refcount_release(&cs->cs_outstanding_ctl_pdus);
wakeup(__DEVOLATILE(void *, &cs->cs_outstanding_ctl_pdus));
ctl_free_io(io);
icl_pdu_free(request);
return;
default:
panic("cfiscsi_done called with wrong opcode 0x%x",