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 <xiaodong.liu@intel.com>
Reviewed-on: https://review.gerrithub.io/389779
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Xiaodong Liu 2017-11-30 05:25:58 -05:00 committed by Daniel Verkamp
parent 863eb9e04e
commit c45a589901

View File

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