diff --git a/drivers/staging/greybus/operation.c b/drivers/staging/greybus/operation.c index b9692b750978..0123109a1070 100644 --- a/drivers/staging/greybus/operation.c +++ b/drivers/staging/greybus/operation.c @@ -889,12 +889,17 @@ EXPORT_SYMBOL_GPL(greybus_message_sent); * data into the request buffer and handle the rest via workqueue. */ static void gb_connection_recv_request(struct gb_connection *connection, - u16 operation_id, u8 type, - void *data, size_t size) + const struct gb_operation_msg_hdr *header, + void *data, size_t size) { struct gb_operation *operation; + u16 operation_id; + u8 type; int ret; + operation_id = le16_to_cpu(header->operation_id); + type = header->type; + operation = gb_operation_create_incoming(connection, operation_id, type, data, size); if (!operation) { @@ -1002,7 +1007,6 @@ void gb_connection_recv(struct gb_connection *connection, struct gb_operation_msg_hdr header; struct device *dev = &connection->hd->dev; size_t msg_size; - u16 operation_id; if (connection->state == GB_CONNECTION_STATE_DISABLED || gb_connection_is_offloaded(connection)) { @@ -1029,13 +1033,13 @@ void gb_connection_recv(struct gb_connection *connection, return; /* XXX Should still complete operation */ } - operation_id = le16_to_cpu(header.operation_id); - if (header.type & GB_MESSAGE_TYPE_RESPONSE) + if (header.type & GB_MESSAGE_TYPE_RESPONSE) { gb_connection_recv_response(connection, &header, data, msg_size); - else - gb_connection_recv_request(connection, operation_id, - header.type, data, msg_size); + } else { + gb_connection_recv_request(connection, &header, data, + msg_size); + } } /*