git: a3d71fffa786 - main - cfiscsi_done: Free the dummy PDU earlier.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 07 Feb 2022 20:55:29 UTC
The branch main has been updated by jhb:
URL: https://cgit.FreeBSD.org/src/commit/?id=a3d71fffa78619fb394b8bb595d2ef680bd0e43a
commit a3d71fffa78619fb394b8bb595d2ef680bd0e43a
Author: John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2022-02-07 20:55:08 +0000
Commit: John Baldwin <jhb@FreeBSD.org>
CommitDate: 2022-02-07 20:55:08 +0000
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: 2e8d1a55258d iscsi: Allocate a dummy PDU for the internal nexus reset task.
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D34176
---
sys/cam/ctl/ctl_frontend_iscsi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sys/cam/ctl/ctl_frontend_iscsi.c b/sys/cam/ctl/ctl_frontend_iscsi.c
index 9827491dba4d..cccb3fd90317 100644
--- a/sys/cam/ctl/ctl_frontend_iscsi.c
+++ b/sys/cam/ctl/ctl_frontend_iscsi.c
@@ -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",