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) {