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:
parent
9864756be7
commit
81ad699461
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user