From b7a612b149fa90b36945142a925167e76376423d Mon Sep 17 00:00:00 2001 From: GangCao Date: Mon, 28 Nov 2022 00:21:10 -0500 Subject: [PATCH] bdev/nvme: use a local variable for the command Change-Id: Icce2d39fb74b13116c43dbb517c9245d71f3771b Signed-off-by: GangCao Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15659 Reviewed-by: wanghailiang Reviewed-by: Changpeng Liu Reviewed-by: Aleksey Marchuk Tested-by: SPDK CI Jenkins Community-CI: Mellanox Build Bot --- module/bdev/nvme/bdev_nvme_rpc.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/module/bdev/nvme/bdev_nvme_rpc.c b/module/bdev/nvme/bdev_nvme_rpc.c index 2392a8aa7..47ab131df 100644 --- a/module/bdev/nvme/bdev_nvme_rpc.c +++ b/module/bdev/nvme/bdev_nvme_rpc.c @@ -936,7 +936,7 @@ rpc_bdev_nvme_apply_firmware(struct spdk_jsonrpc_request *request, struct spdk_bdev *bdev2; struct open_descriptors *opt; struct spdk_bdev_desc *desc; - struct spdk_nvme_cmd *cmd; + struct spdk_nvme_cmd cmd = {}; struct firmware_update_info *firm_ctx; firm_ctx = calloc(1, sizeof(struct firmware_update_info)); @@ -1060,25 +1060,17 @@ rpc_bdev_nvme_apply_firmware(struct spdk_jsonrpc_request *request, firm_ctx->size_remaining = firm_ctx->size; firm_ctx->transfer = spdk_min(firm_ctx->size_remaining, 4096); - cmd = malloc(sizeof(struct spdk_nvme_cmd)); - if (!cmd) { - snprintf(msg, sizeof(msg), "Memory allocation error."); - goto err; - } - memset(cmd, 0, sizeof(struct spdk_nvme_cmd)); - cmd->opc = SPDK_NVME_OPC_FIRMWARE_IMAGE_DOWNLOAD; + cmd.opc = SPDK_NVME_OPC_FIRMWARE_IMAGE_DOWNLOAD; + cmd.cdw10 = spdk_nvme_bytes_to_numd(firm_ctx->transfer); + cmd.cdw11 = firm_ctx->offset >> 2; - cmd->cdw10 = spdk_nvme_bytes_to_numd(firm_ctx->transfer); - cmd->cdw11 = firm_ctx->offset >> 2; - - rc = spdk_bdev_nvme_admin_passthru(firm_ctx->desc, firm_ctx->ch, cmd, firm_ctx->p, + rc = spdk_bdev_nvme_admin_passthru(firm_ctx->desc, firm_ctx->ch, &cmd, firm_ctx->p, firm_ctx->transfer, apply_firmware_complete, firm_ctx); if (rc == 0) { /* normal return here. */ return; } - free(cmd); snprintf(msg, sizeof(msg), "Read firmware image failed!"); err: spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR, msg);