From 4a713238b741f9edef730518414e5f9172a6a4ea Mon Sep 17 00:00:00 2001 From: Darek Stojaczyk Date: Mon, 5 Aug 2019 15:21:38 +0200 Subject: [PATCH] nvme: fix json response on failed construct_nvme_bdev RPCs spdk_jsonrpc_send_error_response() is documented as a shorthand for spdk_jsonrpc_begin_result() + end result, but we used to call it already after doing spdk_jsonrpc_begin_result(), which makes the response completely invalid. Fix it by deferring the initial spdk_jsonrpc_begin_result() until after we did our error checking. While here, remove the NULL checks from that function. After recent jsonrpc changes it can never return NULL. Change-Id: Ibb69803d4e6ce6516817673eec6626dcfc4f1abf Signed-off-by: Darek Stojaczyk Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/464174 Tested-by: SPDK CI Jenkins Reviewed-by: Tomasz Zawadzki Reviewed-by: Ben Walker Reviewed-by: Jim Harris --- lib/bdev/nvme/bdev_nvme_rpc.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lib/bdev/nvme/bdev_nvme_rpc.c b/lib/bdev/nvme/bdev_nvme_rpc.c index 7b8e3c93c..810335b0a 100644 --- a/lib/bdev/nvme/bdev_nvme_rpc.c +++ b/lib/bdev/nvme/bdev_nvme_rpc.c @@ -217,16 +217,12 @@ spdk_rpc_construct_nvme_bdev_done(void *cb_ctx, int rc) struct spdk_json_write_ctx *w; size_t i; - w = spdk_jsonrpc_begin_result(request); - if (w == NULL) { - goto exit; - } - if (rc < 0) { spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS, "Invalid parameters"); goto exit; } + w = spdk_jsonrpc_begin_result(request); spdk_json_write_array_begin(w); for (i = 0; i < ctx->count; i++) { spdk_json_write_string(w, ctx->names[i]);