diff mbox

scsi: libcxgbi: add check for valid cxgbi_task_data

Message ID 1500820292-21893-1-git-send-email-varun@chelsio.com (mailing list archive)
State Accepted, archived
Headers show

Commit Message

Varun Prakash July 23, 2017, 2:31 p.m. UTC
In error case it is possible that ->cleanup_task()
gets called without calling ->alloc_pdu() in this case
cxgbi_task_data is not valid, so add a check for
for valid cxgbi_task_data in cxgbi_cleanup_task().

Signed-off-by: Varun Prakash <varun@chelsio.com>
---
 drivers/scsi/cxgbi/libcxgbi.c | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Martin K. Petersen July 25, 2017, 2:16 a.m. UTC | #1
Varun,

> In error case it is possible that ->cleanup_task() gets called without
> calling ->alloc_pdu() in this case cxgbi_task_data is not valid, so
> add a check for for valid cxgbi_task_data in cxgbi_cleanup_task().

Applied to 4.13/scsi-fixes, thanks!
diff mbox

Patch

diff --git a/drivers/scsi/cxgbi/libcxgbi.c b/drivers/scsi/cxgbi/libcxgbi.c
index e4c83b7..1a4cfa5 100644
--- a/drivers/scsi/cxgbi/libcxgbi.c
+++ b/drivers/scsi/cxgbi/libcxgbi.c
@@ -2128,6 +2128,13 @@  void cxgbi_cleanup_task(struct iscsi_task *task)
 	struct iscsi_tcp_task *tcp_task = task->dd_data;
 	struct cxgbi_task_data *tdata = iscsi_task_cxgbi_data(task);
 
+	if (!tcp_task || !tdata || (tcp_task->dd_data != tdata)) {
+		pr_info("task 0x%p,0x%p, tcp_task 0x%p, tdata 0x%p/0x%p.\n",
+			task, task->sc, tcp_task,
+			tcp_task ? tcp_task->dd_data : NULL, tdata);
+		return;
+	}
+
 	log_debug(1 << CXGBI_DBG_ISCSI,
 		"task 0x%p, skb 0x%p, itt 0x%x.\n",
 		task, tdata->skb, task->hdr_itt);