Skip to content

Commit 0849a54

Browse files
maurizio-lombardikeithbusch
authored andcommitted
nvmet-tcp: fix a crash in nvmet_req_complete()
in nvmet_tcp_handle_h2c_data_pdu(), if the host sends a data_offset different from rbytes_done, the driver ends up calling nvmet_req_complete() passing a status error. The problem is that at this point cmd->req is not yet initialized, the kernel will crash after dereferencing a NULL pointer. Fix the bug by replacing the call to nvmet_req_complete() with nvmet_tcp_fatal_error(). Fixes: 872d26a ("nvmet-tcp: add NVMe over TCP target driver") Reviewed-by: Keith Busch <kbsuch@kernel.org> Reviewed-by: Sagi Grimberg <sagi@grimberg.me> Signed-off-by: Maurizio Lombardi <mlombard@redhat.com> Signed-off-by: Keith Busch <kbusch@kernel.org>
1 parent efa5630 commit 0849a54

1 file changed

Lines changed: 1 addition & 2 deletions

File tree

drivers/nvme/target/tcp.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -998,8 +998,7 @@ static int nvmet_tcp_handle_h2c_data_pdu(struct nvmet_tcp_queue *queue)
998998
data->ttag, le32_to_cpu(data->data_offset),
999999
cmd->rbytes_done);
10001000
/* FIXME: use path and transport errors */
1001-
nvmet_req_complete(&cmd->req,
1002-
NVME_SC_INVALID_FIELD | NVME_SC_DNR);
1001+
nvmet_tcp_fatal_error(queue);
10031002
return -EPROTO;
10041003
}
10051004

0 commit comments

Comments
 (0)