From f0a2538c046cdd4975ff103be11e1a8e424de182 Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Thu, 20 Apr 2023 11:35:25 +0900 Subject: [PATCH] bdev/nvme: Alloc bdev name array dynamically for attach_controller RPC Signed-off-by: Shuhei Matsumoto Change-Id: I9c1822421563210f6a656553355e29e75c8b0c21 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/17650 Reviewed-by: Ben Walker Reviewed-by: Aleksey Marchuk Tested-by: SPDK CI Jenkins --- module/bdev/nvme/bdev_nvme_rpc.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/module/bdev/nvme/bdev_nvme_rpc.c b/module/bdev/nvme/bdev_nvme_rpc.c index e34240569..51c77061b 100644 --- a/module/bdev/nvme/bdev_nvme_rpc.c +++ b/module/bdev/nvme/bdev_nvme_rpc.c @@ -265,7 +265,7 @@ struct rpc_bdev_nvme_attach_controller_ctx { struct rpc_bdev_nvme_attach_controller req; uint32_t count; size_t bdev_count; - const char *names[NVME_MAX_BDEVS_PER_RPC]; + const char **names; struct spdk_jsonrpc_request *request; }; @@ -273,6 +273,7 @@ static void free_rpc_bdev_nvme_attach_controller_ctx(struct rpc_bdev_nvme_attach_controller_ctx *ctx) { free_rpc_bdev_nvme_attach_controller(&ctx->req); + free(ctx->names); free(ctx); } @@ -345,6 +346,12 @@ rpc_bdev_nvme_attach_controller(struct spdk_jsonrpc_request *request, goto cleanup; } + ctx->names = calloc(NVME_MAX_BDEVS_PER_RPC, sizeof(char *)); + if (ctx->names == NULL) { + spdk_jsonrpc_send_error_response(request, -ENOMEM, spdk_strerror(ENOMEM)); + goto cleanup; + } + /* Parse trstring */ rc = spdk_nvme_transport_id_populate_trstring(&trid, ctx->req.trtype); if (rc < 0) {