Commit 7035833f authored by Alex Elder's avatar Alex Elder Committed by Greg Kroah-Hartman

greybus: cancel whole operation on interrupt

Cancel the operation--not just the request message--if waiting
for a synchronous operation to complete is interrupted.  Return
the operation result (which in that case will be -EINTR).  The
cancelation will result in the normal operation completion path
being taken before returning.

Make gb_operation_wait() private, since it's only ever used for
for synchronous operations.
Signed-off-by: default avatarAlex Elder <elder@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
parent f68c05c0
......@@ -161,21 +161,18 @@ static void gb_operation_complete(struct gb_operation *operation)
}
/*
* Wait for a submitted operation to complete. Returns -RESTARTSYS
* if the wait was interrupted. Otherwise returns the result of the
* operation.
* Wait for a submitted operation to complete. Returns the result
* of the operation; this will be -EINTR if the wait was interrupted.
*/
int gb_operation_wait(struct gb_operation *operation)
static int gb_operation_wait(struct gb_operation *operation)
{
int ret;
ret = wait_for_completion_interruptible(&operation->completion);
/* If interrupted, cancel the in-flight buffer */
if (ret < 0)
gb_message_cancel(operation->request);
else
ret = operation->errno;
return ret;
gb_operation_cancel(operation, -EINTR);
return operation->errno;
}
#if 0
......
......@@ -99,7 +99,6 @@ int gb_operation_request_send(struct gb_operation *operation,
int gb_operation_response_send(struct gb_operation *operation);
void gb_operation_cancel(struct gb_operation *operation, int errno);
int gb_operation_wait(struct gb_operation *operation);
int gb_operation_status_map(u8 status);
......
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