mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 09:14:19 +08:00
greybus: operation: add temporary pointer to response handler
As a preparatory clean up, add a temporary variable to point to the response message header. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Tested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Johan Hovold <johan@hovoldconsulting.com> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
parent
d2320b2dbf
commit
34804efb0c
@ -858,6 +858,7 @@ static void gb_connection_recv_request(struct gb_connection *connection,
|
||||
static void gb_connection_recv_response(struct gb_connection *connection,
|
||||
u16 operation_id, u8 result, void *data, size_t size)
|
||||
{
|
||||
struct gb_operation_msg_hdr *header;
|
||||
struct gb_operation *operation;
|
||||
struct gb_message *message;
|
||||
int errno = gb_operation_status_map(result);
|
||||
@ -872,11 +873,12 @@ static void gb_connection_recv_response(struct gb_connection *connection,
|
||||
}
|
||||
|
||||
message = operation->response;
|
||||
message_size = sizeof(*message->header) + message->payload_size;
|
||||
header = message->header;
|
||||
message_size = sizeof(*header) + message->payload_size;
|
||||
if (!errno && size != message_size) {
|
||||
dev_err(&connection->hd->dev,
|
||||
"%s: malformed response 0x%02x received (%zu != %zu)\n",
|
||||
connection->name, message->header->type, size,
|
||||
connection->name, header->type, size,
|
||||
message_size);
|
||||
errno = -EMSGSIZE;
|
||||
}
|
||||
@ -884,11 +886,11 @@ static void gb_connection_recv_response(struct gb_connection *connection,
|
||||
|
||||
/* We must ignore the payload if a bad status is returned */
|
||||
if (errno)
|
||||
size = sizeof(*message->header);
|
||||
size = sizeof(*header);
|
||||
|
||||
/* The rest will be handled in work queue context */
|
||||
if (gb_operation_result_set(operation, errno)) {
|
||||
memcpy(message->header, data, size);
|
||||
memcpy(header, data, size);
|
||||
queue_work(gb_operation_completion_wq, &operation->work);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user