From patchwork Tue Jul 25 19:29:14 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Amit Pundir X-Patchwork-Id: 108673 Delivered-To: patch@linaro.org Received: by 10.140.101.44 with SMTP id t41csp939461qge; Tue, 25 Jul 2017 12:29:48 -0700 (PDT) X-Received: by 10.84.210.38 with SMTP id z35mr16939129plh.416.1501010988839; Tue, 25 Jul 2017 12:29:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1501010988; cv=none; d=google.com; s=arc-20160816; b=ST9mXrZi+d/vWTp3Wam/LeXUfEzpC345yw6QZH9aJOkZgUnxTGAI7XqH8MBeHU10SN sKi5mu6ByZz/zrT1517WM6WxtNSlMaUx9yY31bJeSd7iySVHr34dMEVg01qjt8gLRtbJ QSnURCTVY6bPAwTTSrPBP0CvVeV6cOMi9MAmHKdiIn8awD35FSuTdluLq9v44tpNJVmU gdpQLeXYrFgDkNSH9VP6drLsjb6njU9WEaVMe8AJ2luLznykffR9SLG7rTPjBf0bFTv+ oDbe/klSLLzdyXWGUSHGGrcJEsAZorcBgYNIyDXAEmaMjcj6YleYQQsin8eTqJeSmGX6 rwsw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=6IFgIby7D57QvOl0lmdYKnavz54HUz20je43/wyIIhg=; b=VelmAhWfLiqB+dVCfZl4uqyB6ADVFvJQhEHi0AO7R3flhQTPxWIvfh7fgUXwixBPzw 8HRN/BwfaWv1cbUeqe+M4Te5rqHpDlEBwVDKV4DgXi9gexYtb/yCKTTmHqfZF16K0IbJ lMaglol4fiWh/u9x3+bkXzsqjyu60Y0WDh5Ff1qBEPcb1mgv4hGakK7HhY4XgjXLhF8I 0D7iIG1Wsj0O9xoCezTagPWA0xf8lPPmNwAt0Q25SiE4klcVdeGTdeYDflmAc4QQsYwU AxC9wq4sO1ohCDaeJaWgzO9cReC8qzqZh7lIvj9pxUvPnc5r9n2F1a07dlcBUSAbG5aa rsPg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.b=ezxq0vF/; spf=pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o129si8605553pga.543.2017.07.25.12.29.48; Tue, 25 Jul 2017 12:29:48 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.b=ezxq0vF/; spf=pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754505AbdGYT3q (ORCPT + 6 others); Tue, 25 Jul 2017 15:29:46 -0400 Received: from mail-pf0-f182.google.com ([209.85.192.182]:33491 "EHLO mail-pf0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754316AbdGYT3o (ORCPT ); Tue, 25 Jul 2017 15:29:44 -0400 Received: by mail-pf0-f182.google.com with SMTP id s70so61993010pfs.0 for ; Tue, 25 Jul 2017 12:29:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=6IFgIby7D57QvOl0lmdYKnavz54HUz20je43/wyIIhg=; b=ezxq0vF/jQqbUaheLHPllsaiaxLhgHA4j+3DZQH5X/CL8uvIYYA+I1eBCe9zskULqV My1EQHHj1j923FvRDNqYDp9obQPJE1dUlapzu7vE2LGHBJZ5Ub5fR1hsKTMjhb0Tiidl TYvs4M++Q8xGEqi1mQQ6CYIMGR8c9joSv/D28= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=6IFgIby7D57QvOl0lmdYKnavz54HUz20je43/wyIIhg=; b=RnZwjOA15vTzzLDgSH2ZxNOw6JvOkuh6LfEt13aSwfWfkbP4jyP6JymffrSCk2eLGm 0vdhUsoUQwz+c4aK+upOVNll1bZvHLQXgenbdlj1aab8tShJPGnIEFHXTUpsBdIwjQ8y Y+qxNehcCCbotup8oG7+y9HEQSPdZUpW1qi1ZY4zZY8XIjjmWxg3RcwgzdyikhMhPAVP 0XfqoNzbG/x1XcEZ83FXgJhwb9QqJW+0GaEWXN2LehXZiW6kmFjHnTrLl/AiSfsAycPs 8OZLiwKt8ZqevZRcvKqc0H4YIJr9QGFyRZpdPaWJCI7fDs6GaSXWCUvQyTGdWq+gD5wV El+A== X-Gm-Message-State: AIVw1103iXVO8rfIrFyfjiWZX3bWkr0riDfOdFmw94nvkEeIaUaMsqoU os7gMusaVp9rD7kO X-Received: by 10.101.90.135 with SMTP id c7mr20158094pgt.168.1501010983794; Tue, 25 Jul 2017 12:29:43 -0700 (PDT) Received: from localhost.localdomain ([106.51.135.235]) by smtp.gmail.com with ESMTPSA id 85sm30371425pfr.90.2017.07.25.12.29.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 25 Jul 2017 12:29:42 -0700 (PDT) From: Amit Pundir To: Greg KH Cc: Stable , Sudeep Holla , Jassi Brar Subject: [PATCH for-4.9 08/10] mailbox: skip complete wait event if timer expired Date: Wed, 26 Jul 2017 00:59:14 +0530 Message-Id: <1501010956-27944-9-git-send-email-amit.pundir@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1501010956-27944-1-git-send-email-amit.pundir@linaro.org> References: <1501010956-27944-1-git-send-email-amit.pundir@linaro.org> Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Sudeep Holla 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. Fixes: 2b6d83e2b8b7 ("mailbox: Introduce framework for mailbox") Reported-by: Alexey Klimov Signed-off-by: Sudeep Holla Signed-off-by: Jassi Brar Signed-off-by: Amit Pundir --- drivers/mailbox/mailbox.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) -- 2.7.4 diff --git a/drivers/mailbox/mailbox.c b/drivers/mailbox/mailbox.c index e9e6d6672967..77ac049e51b6 100644 --- a/drivers/mailbox/mailbox.c +++ b/drivers/mailbox/mailbox.c @@ -108,7 +108,7 @@ static void tx_tick(struct mbox_chan *chan, int r) if (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); } @@ -272,8 +272,8 @@ int mbox_send_message(struct mbox_chan *chan, void *mssg) ret = wait_for_completion_timeout(&chan->tx_complete, wait); if (ret == 0) { - t = -EIO; - tx_tick(chan, -EIO); + t = -ETIME; + tx_tick(chan, t); } }