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 <bgolaszewski@baylibre.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
Bartosz Golaszewski 2015-11-19 13:46:43 +01:00 committed by Greg Kroah-Hartman
parent 9864756be7
commit 81ad699461
1 changed files with 9 additions and 9 deletions

View File

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