Commit 81ad6994 authored by Bartosz Golaszewski's avatar Bartosz Golaszewski Committed by Greg Kroah-Hartman

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: default avatarBartosz Golaszewski <bgolaszewski@baylibre.com>
Reviewed-by: default avatarJohan Hovold <johan@hovoldconsulting.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
parent 9864756b
...@@ -533,16 +533,16 @@ static int gb_loopback_request_recv(u8 type, struct gb_operation *operation) ...@@ -533,16 +533,16 @@ static int gb_loopback_request_recv(u8 type, struct gb_operation *operation)
return -EINVAL; return -EINVAL;
} }
if (len) { if (!gb_operation_response_alloc(operation,
if (!gb_operation_response_alloc(operation, len + sizeof(*response), GFP_KERNEL)) {
len + sizeof(*response), GFP_KERNEL)) { dev_err(dev, "error allocating response\n");
dev_err(dev, "error allocating response\n"); return -ENOMEM;
return -ENOMEM;
}
response = operation->response->payload;
response->len = cpu_to_le32(len);
memcpy(response->data, request->data, len);
} }
response = operation->response->payload;
response->len = cpu_to_le32(len);
if (len)
memcpy(response->data, request->data, len);
return 0; return 0;
default: default:
dev_err(dev, "unsupported request: %hhu\n", type); dev_err(dev, "unsupported request: %hhu\n", type);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment