From: Bartosz Golaszewski Date: Thu, 19 Nov 2015 12:46:43 +0000 (+0100) Subject: greybus: loopback: allocate a response even for a 0-byte request X-Git-Tag: v4.9-rc1~119^2~378^2~21^2~1033 X-Git-Url: http://git.cascardo.info/?p=cascardo%2Flinux.git;a=commitdiff_plain;h=81ad6994611706270bc68a8dd951d7c69e2ed175 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 --- 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);