The data sent callback can execute in atomic context. If an error
occurred, we shouldn't be completing the operation right then and
there. Instead, hand it off to the operation workqueue to complete
the operation.
Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
/* XXX Right now we assume we're an outgoing request */
message = gb_hd_message_find(hd, header);
operation = message->operation;
- gb_connection_err(operation->connection, "send error %d\n", status);
operation->errno = status;
- gb_operation_complete(operation);
+ queue_work(gb_operation_workqueue, &operation->work);
}
EXPORT_SYMBOL_GPL(greybus_data_sent);