greybus: handle data send errors in workqueue
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>
This commit is contained in:
Родитель
ee637a9b0e
Коммит
583c3117a4
|
@ -506,9 +506,8 @@ greybus_data_sent(struct greybus_host_device *hd, void *header, int status)
|
|||
/* 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);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче