From: Nilesh Javali <njavali@marvell.com>
To: <martin.petersen@oracle.com>
Cc: <linux-scsi@vger.kernel.org>, <GR-QLogic-Storage-Upstream@marvell.com>
Subject: [PATCH v2 04/13] qla2xxx: Fix missed DMA unmap for NVME ls requests
Date: Thu, 10 Mar 2022 01:25:55 -0800 [thread overview]
Message-ID: <20220310092604.22950-5-njavali@marvell.com> (raw)
In-Reply-To: <20220310092604.22950-1-njavali@marvell.com>
From: Arun Easi <aeasi@marvell.com>
At NVME ELS request time, request structure is DMA mapped
and never unmapped. Fix this by calling the unmap on
ELS completion.
Cc: stable@vger.kernel.org
Fixes: e84067d74301 ("scsi: qla2xxx: Add FC-NVMe F/W initialization and transport registration")
Signed-off-by: Arun Easi <aeasi@marvell.com>
Signed-off-by: Nilesh Javali <njavali@marvell.com>
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
---
drivers/scsi/qla2xxx/qla_nvme.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/drivers/scsi/qla2xxx/qla_nvme.c b/drivers/scsi/qla2xxx/qla_nvme.c
index 3bf5cbd754a7..794a95b2e3b4 100644
--- a/drivers/scsi/qla2xxx/qla_nvme.c
+++ b/drivers/scsi/qla2xxx/qla_nvme.c
@@ -175,6 +175,18 @@ static void qla_nvme_release_fcp_cmd_kref(struct kref *kref)
qla2xxx_rel_qpair_sp(sp->qpair, sp);
}
+static void qla_nvme_ls_unmap(struct srb *sp, struct nvmefc_ls_req *fd)
+{
+ if (sp->flags & SRB_DMA_VALID) {
+ struct srb_iocb *nvme = &sp->u.iocb_cmd;
+ struct qla_hw_data *ha = sp->fcport->vha->hw;
+
+ dma_unmap_single(&ha->pdev->dev, nvme->u.nvme.cmd_dma,
+ fd->rqstlen, DMA_TO_DEVICE);
+ sp->flags &= ~SRB_DMA_VALID;
+ }
+}
+
static void qla_nvme_release_ls_cmd_kref(struct kref *kref)
{
struct srb *sp = container_of(kref, struct srb, cmd_kref);
@@ -191,6 +203,8 @@ static void qla_nvme_release_ls_cmd_kref(struct kref *kref)
spin_unlock_irqrestore(&priv->cmd_lock, flags);
fd = priv->fd;
+
+ qla_nvme_ls_unmap(sp, fd);
fd->done(fd, priv->comp_status);
out:
qla2x00_rel_sp(sp);
@@ -361,6 +375,8 @@ static int qla_nvme_ls_req(struct nvme_fc_local_port *lport,
dma_sync_single_for_device(&ha->pdev->dev, nvme->u.nvme.cmd_dma,
fd->rqstlen, DMA_TO_DEVICE);
+ sp->flags |= SRB_DMA_VALID;
+
rval = qla2x00_start_sp(sp);
if (rval != QLA_SUCCESS) {
ql_log(ql_log_warn, vha, 0x700e,
@@ -368,6 +384,7 @@ static int qla_nvme_ls_req(struct nvme_fc_local_port *lport,
wake_up(&sp->nvme_ls_waitq);
sp->priv = NULL;
priv->sp = NULL;
+ qla_nvme_ls_unmap(sp, fd);
qla2x00_rel_sp(sp);
return rval;
}
--
2.19.0.rc0
next prev parent reply other threads:[~2022-03-10 9:26 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-10 9:25 [PATCH v2 00/13] qla2xxx driver fixes Nilesh Javali
2022-03-10 9:25 ` [PATCH v2 01/13] qla2xxx: Fix incorrect reporting of task management failure Nilesh Javali
2022-03-10 9:25 ` [PATCH v2 02/13] qla2xxx: Fix disk failure to rediscover Nilesh Javali
2022-03-10 9:25 ` [PATCH v2 03/13] qla2xxx: Fix loss of NVME namespaces after driver reload test Nilesh Javali
2022-03-10 9:25 ` Nilesh Javali [this message]
2022-03-10 9:25 ` [PATCH v2 05/13] qla2xxx: Fix crash during module load unload test Nilesh Javali
2022-03-10 9:25 ` [PATCH v2 06/13] qla2xxx: fix n2n inconsistent plogi Nilesh Javali
2022-03-10 9:25 ` [PATCH v2 07/13] qla2xxx: Fix hang due to session stuck Nilesh Javali
2022-03-10 9:25 ` [PATCH v2 08/13] qla2xxx: Fix laggy FC remote port session recovery Nilesh Javali
2022-03-10 9:26 ` [PATCH v2 09/13] qla2xxx: reduce false trigger to login Nilesh Javali
2022-03-10 9:26 ` [PATCH v2 10/13] qla2xxx: Fix stuck session of prli reject Nilesh Javali
2022-03-10 9:26 ` [PATCH v2 11/13] qla2xxx: Use correct feature type field during rffid processing Nilesh Javali
2022-03-10 9:26 ` [PATCH v2 12/13] qla2xxx: Increase max limit of ql2xnvme_queues Nilesh Javali
2022-03-10 9:26 ` [PATCH v2 13/13] qla2xxx: Update version to 10.02.07.400-k Nilesh Javali
2022-03-15 4:29 ` [PATCH v2 00/13] qla2xxx driver fixes Martin K. Petersen
2022-03-19 3:57 ` Martin K. Petersen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220310092604.22950-5-njavali@marvell.com \
--to=njavali@marvell.com \
--cc=GR-QLogic-Storage-Upstream@marvell.com \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox