Messages in this thread | | | Subject | Re: [PATCH] mailbox: always wait in mbox_send_message for blocking tx mode | From | Sudeep Holla <> | Date | Mon, 20 Mar 2017 18:48:25 +0000 |
| |
On 20/03/17 18:47, Alexey Klimov wrote: > Hi Sudeep, > > thanks for sending this patch. > > On Mon, Mar 20, 2017 at 03:40:10PM +0000, Sudeep Holla wrote: >> There exists a race when msg_submit return immediately as there was an >> active request being processed which may have completed just before it's >> checked again in mbox_send_message. This will result in return to the >> caller without waiting in mbox_send_message even when it's blocking Tx. >> >> This patch fixes the issue by making use of non-negative token returned >> by add_to_rbuf to check if the request was queued and block always if >> so in blocking Tx mode. >> >> Fixes: 2b6d83e2b8b7 ("mailbox: Introduce framework for mailbox") >> Cc: Jassi Brar <jassisinghbrar@gmail.com> >> Reported-by: Alexey Klimov <alexey.klimov@arm.com> >> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com> >> --- >> drivers/mailbox/mailbox.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/mailbox/mailbox.c b/drivers/mailbox/mailbox.c >> index 4671f8a12872..d5895791ab5d 100644 >> --- a/drivers/mailbox/mailbox.c >> +++ b/drivers/mailbox/mailbox.c >> @@ -260,7 +260,7 @@ int mbox_send_message(struct mbox_chan *chan, void *mssg) >> >> msg_submit(chan); >> >> - if (chan->cl->tx_block && chan->active_req) { >> + if (chan->cl->tx_block && t >= 0) { > > What do you think about removing t>=0 at all? > If add_to_rbuf() above returns negative number then we won't reach this point > in code at all and quit this function with error. If execution reaches this line then > we can say that t is definetely >= 0 and maybe it shouldn't be checked.
Ah right, sorry I missed to see that, will fix it.
-- Regards, Sudeep
| |