diff options
Diffstat (limited to 'drivers/slimbus/messaging.c')
-rw-r--r-- | drivers/slimbus/messaging.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/slimbus/messaging.c b/drivers/slimbus/messaging.c index e5ae26227bdb..0deb4c291c6a 100644 --- a/drivers/slimbus/messaging.c +++ b/drivers/slimbus/messaging.c @@ -147,8 +147,9 @@ int slim_do_transfer(struct slim_controller *ctrl, struct slim_msg_txn *txn) } ret = ctrl->xfer_msg(ctrl, txn); - - if (!ret && need_tid && !txn->msg->comp) { + if (ret == -ETIMEDOUT) { + slim_free_txn_tid(ctrl, txn); + } else if (!ret && need_tid && !txn->msg->comp) { unsigned long ms = txn->rl + HZ; timeout = wait_for_completion_timeout(txn->comp, |