From c45a589901e2d809b37cda6e3c2e86e91e689974 Mon Sep 17 00:00:00 2001 From: Xiaodong Liu Date: Thu, 30 Nov 2017 05:25:58 -0500 Subject: [PATCH] nbd: avoid payload malloc when its size is 0 Some nbd io type has no payload, like NBD_CMD_DISC. Change-Id: I17babf625f51d32bf07fa7a9b6a7396660b39cd5 Signed-off-by: Xiaodong Liu Reviewed-on: https://review.gerrithub.io/389779 Tested-by: SPDK Automated Test System Reviewed-by: Jim Harris Reviewed-by: Changpeng Liu Reviewed-by: Daniel Verkamp Reviewed-by: Ben Walker --- lib/nbd/nbd.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/nbd/nbd.c b/lib/nbd/nbd.c index 0d83b4b80..0557d4eaf 100644 --- a/lib/nbd/nbd.c +++ b/lib/nbd/nbd.c @@ -242,10 +242,15 @@ process_request(struct spdk_nbd_disk *nbd) io->payload_size = from_be32(&io->req.len); spdk_dma_free(io->payload); - io->payload = spdk_dma_malloc(io->payload_size, nbd->buf_align, NULL); - if (io->payload == NULL) { - SPDK_ERRLOG("could not allocate io->payload of size %d\n", io->payload_size); - return -ENOMEM; + + if (io->payload_size) { + io->payload = spdk_dma_malloc(io->payload_size, nbd->buf_align, NULL); + if (io->payload == NULL) { + SPDK_ERRLOG("could not allocate io->payload of size %d\n", io->payload_size); + return -ENOMEM; + } + } else { + io->payload = NULL; } if (from_be32(&io->req.magic) != NBD_REQUEST_MAGIC) {