summaryrefslogtreecommitdiff
path: root/drivers/staging/greybus
diff options
context:
space:
mode:
authorAlex Elder <elder@linaro.org>2014-12-02 08:30:36 -0600
committerGreg Kroah-Hartman <greg@kroah.com>2014-12-02 14:41:58 -0800
commitd2d2c0fe70ff09510f56bd341e2ab415b7b5e947 (patch)
tree81ab71d5d77c42609beb47123e31c955a74e89df /drivers/staging/greybus
parent0cffcac3051fa1447d8a452ab5e0029bbe100777 (diff)
greybus: set result in gb_operation_response_send()
Change gb_operation_response_send() so it takes an errno to assign as an operation's result. This emphasizes that setting the result should be the last thing done to an incoming operation before sending its response. Signed-off-by: Alex Elder <elder@linaro.org> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Diffstat (limited to 'drivers/staging/greybus')
-rw-r--r--drivers/staging/greybus/operation.c7
-rw-r--r--drivers/staging/greybus/operation.h2
2 files changed, 7 insertions, 2 deletions
diff --git a/drivers/staging/greybus/operation.c b/drivers/staging/greybus/operation.c
index 2a6f361b877f..c80eb33f5884 100644
--- a/drivers/staging/greybus/operation.c
+++ b/drivers/staging/greybus/operation.c
@@ -642,8 +642,13 @@ int gb_operation_request_send(struct gb_operation *operation,
/*
* Send a response for an incoming operation request.
*/
-int gb_operation_response_send(struct gb_operation *operation)
+int gb_operation_response_send(struct gb_operation *operation, int errno)
{
+ /* Record the result */
+ if (!gb_operation_result_set(operation, errno)) {
+ pr_err("request result already set\n");
+ return -EIO; /* Shouldn't happen */
+ }
gb_operation_destroy(operation);
return 0;
diff --git a/drivers/staging/greybus/operation.h b/drivers/staging/greybus/operation.h
index feff8238f7cf..ed344f8de2a7 100644
--- a/drivers/staging/greybus/operation.h
+++ b/drivers/staging/greybus/operation.h
@@ -100,7 +100,7 @@ static inline void gb_operation_destroy(struct gb_operation *operation)
int gb_operation_request_send(struct gb_operation *operation,
gb_operation_callback callback);
-int gb_operation_response_send(struct gb_operation *operation);
+int gb_operation_response_send(struct gb_operation *operation, int errno);
void gb_operation_cancel(struct gb_operation *operation, int errno);