mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 16:24:13 +08:00
nvme_fc: fix command id check
The code validates the command_id in the response to the original sqe command. But prior code was using the rq->rqno as the sqe command id. The core layer overwrites what the transport set there originally. Use the actual sqe content. Signed-off-by: James Smart <james.smart@broadcom.com> Reviewed-by: Sagi Grimberg <sagi@grimberg.me> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
a44f53faf4
commit
458f280d71
@ -1192,6 +1192,7 @@ nvme_fc_fcpio_done(struct nvmefc_fcp_req *req)
|
||||
struct nvme_fc_ctrl *ctrl = op->ctrl;
|
||||
struct nvme_fc_queue *queue = op->queue;
|
||||
struct nvme_completion *cqe = &op->rsp_iu.cqe;
|
||||
struct nvme_command *sqe = &op->cmd_iu.sqe;
|
||||
__le16 status = cpu_to_le16(NVME_SC_SUCCESS << 1);
|
||||
union nvme_result result;
|
||||
|
||||
@ -1274,7 +1275,7 @@ nvme_fc_fcpio_done(struct nvmefc_fcp_req *req)
|
||||
be32_to_cpu(op->rsp_iu.xfrd_len) !=
|
||||
freq->transferred_length ||
|
||||
op->rsp_iu.status_code ||
|
||||
op->rqno != le16_to_cpu(cqe->command_id))) {
|
||||
sqe->common.command_id != cqe->command_id)) {
|
||||
status = cpu_to_le16(NVME_SC_FC_TRANSPORT_ERROR << 1);
|
||||
goto done;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user