From f9fae3f3a9f6d064e3f9252c0d82e9a870cc119e Mon Sep 17 00:00:00 2001 From: Pawel Wodkowski Date: Mon, 23 Apr 2018 18:52:25 +0200 Subject: [PATCH] nvme: change num_children to be wider type uint8_t is too small to handle huge payloads. 32M payload already overflow this. Change-Id: I083ba7d3ded25b99571d422b7a3a4e7653a8d231 Signed-off-by: Pawel Wodkowski Reviewed-on: https://review.gerrithub.io/408677 Tested-by: SPDK Automated Test System Reviewed-by: Daniel Verkamp Reviewed-by: Jim Harris --- lib/nvme/nvme_internal.h | 2 +- lib/nvme/nvme_ns_cmd.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/nvme/nvme_internal.h b/lib/nvme/nvme_internal.h index ccbc11bc4..56c0f0d5d 100644 --- a/lib/nvme/nvme_internal.h +++ b/lib/nvme/nvme_internal.h @@ -169,7 +169,7 @@ struct nvme_request { * Number of children requests still outstanding for this * request which was split into multiple child requests. */ - uint8_t num_children; + uint16_t num_children; uint32_t payload_size; /** diff --git a/lib/nvme/nvme_ns_cmd.c b/lib/nvme/nvme_ns_cmd.c index ed02ca7ba..7f39a71f0 100644 --- a/lib/nvme/nvme_ns_cmd.c +++ b/lib/nvme/nvme_ns_cmd.c @@ -62,6 +62,8 @@ nvme_cb_complete_child(void *child_arg, const struct spdk_nvme_cpl *cpl) static void nvme_request_add_child(struct nvme_request *parent, struct nvme_request *child) { + assert(parent->num_children != UINT16_MAX); + if (parent->num_children == 0) { /* * Defer initialization of the children TAILQ since it falls