From 81ad6994611706270bc68a8dd951d7c69e2ed175 Mon Sep 17 00:00:00 2001 From: Bartosz Golaszewski Date: Thu, 19 Nov 2015 13:46:43 +0100 Subject: [PATCH] greybus: loopback: allocate a response even for a 0-byte request If payload length of a transfer packet is 0, no response is allocated. Send a well-formed response even in that case. Signed-off-by: Bartosz Golaszewski Reviewed-by: Johan Hovold Signed-off-by: Greg Kroah-Hartman --- drivers/staging/greybus/loopback.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/staging/greybus/loopback.c b/drivers/staging/greybus/loopback.c index ec68247f5bdb..0c38414a3e06 100644 --- a/drivers/staging/greybus/loopback.c +++ b/drivers/staging/greybus/loopback.c @@ -533,16 +533,16 @@ static int gb_loopback_request_recv(u8 type, struct gb_operation *operation) return -EINVAL; } - if (len) { - if (!gb_operation_response_alloc(operation, - len + sizeof(*response), GFP_KERNEL)) { - dev_err(dev, "error allocating response\n"); - return -ENOMEM; - } - response = operation->response->payload; - response->len = cpu_to_le32(len); - memcpy(response->data, request->data, len); + if (!gb_operation_response_alloc(operation, + len + sizeof(*response), GFP_KERNEL)) { + dev_err(dev, "error allocating response\n"); + return -ENOMEM; } + response = operation->response->payload; + response->len = cpu_to_le32(len); + if (len) + memcpy(response->data, request->data, len); + return 0; default: dev_err(dev, "unsupported request: %hhu\n", type); -- 2.20.1