Patch "mailbox: skip complete wait event if timer expired" has been added to the 3.18-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
mailbox: skip complete wait event if timer expired
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
mailbox-skip-complete-wait-event-if-timer-expired.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
cc6eeaa3029a6dbcb4ad41b1f92876483bd88965Mon Sep 17 00:00:00 2001
From: Sudeep Holla <[email protected]>
Date: Tue, 21 Mar 2017 11:30:15 +0000
Subject: mailbox: skip complete wait event if timer expired
From: Sudeep Holla <[email protected]>
commit cc6eeaa3029a6dbcb4ad41b1f92876483bd88965 upstream.
If a wait_for_completion_timeout() call returns due to a timeout, complete() can get called after returning from the wait which is incorrect and can cause subsequent transmissions on a channel to fail. Since the wait_for_completion_timeout() sees the completion variable is non-zero caused by the erroneous/spurious complete() call, and it immediately returns without waiting for the time as expected by the client.
This patch fixes the issue by skipping complete() call for the timer expiry.
--- drivers/mailbox/mailbox.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/mailbox/mailbox.c +3 -3
@@ -103,7 +103,7 @@ static void tx_tick(struct mbox_chan *chif (mssg && chan->cl->tx_done) chan->cl->tx_done (chan->cl, mssg, r); -if (chan->cl->tx_block) +if (r != -ETIME && chan->cl->tx_block)complete (&chan->tx_complete); }
@@ -266,8 +266,8 @@ int mbox_send_message(struct mbox_chan * ret =wait_for_completion_timeout (&chan->tx_complete, wait);if (ret ==0 ) { - t = -EIO ; -tx_tick (chan, -EIO ); + t = -ETIME ; +tx_tick (chan, t); } }
Patches currently in stable-queue which might be from [email protected] are
queue-3.18/mailbox-always-wait-in-mbox_send_message-for-blocking-tx-mode.patch queue-3.18/mailbox-skip-complete-wait-event-if-timer-expired.patch queue-3.18/mailbox-handle-empty-message-in-tx_tick.patch