From: Sasha Levin <Alexander.Levin@microsoft.com>
To: "stable@vger.kernel.org" <stable@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Cc: John Keeping <john@metanate.com>, Vinod Koul <vkoul@kernel.org>,
Sasha Levin <Alexander.Levin@microsoft.com>
Subject: [PATCH AUTOSEL 4.4 09/30] dmaengine: pl330: fix irq race with terminate_all
Date: Fri, 7 Sep 2018 00:39:02 +0000 [thread overview]
Message-ID: <20180907003853.57942-9-alexander.levin@microsoft.com> (raw)
In-Reply-To: <20180907003853.57942-1-alexander.levin@microsoft.com>
From: John Keeping <john@metanate.com>
[ Upstream commit e49756544a21f5625b379b3871d27d8500764670 ]
In pl330_update() when checking if a channel has been aborted, the
channel's lock is not taken, only the overall pl330_dmac lock. But in
pl330_terminate_all() the aborted flag (req_running==-1) is set under
the channel lock and not the pl330_dmac lock.
With threaded interrupts, this leads to a potential race:
pl330_terminate_all pl330_update
------------------- ------------
lock channel
entry
lock pl330
_stop channel
unlock pl330
lock pl330
check req_running != -1
req_running = -1
_start channel
Signed-off-by: John Keeping <john@metanate.com>
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
---
drivers/dma/pl330.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c
index 8db791ef2027..95619ee33112 100644
--- a/drivers/dma/pl330.c
+++ b/drivers/dma/pl330.c
@@ -2132,13 +2132,14 @@ static int pl330_terminate_all(struct dma_chan *chan)
pm_runtime_get_sync(pl330->ddma.dev);
spin_lock_irqsave(&pch->lock, flags);
+
spin_lock(&pl330->lock);
_stop(pch->thread);
- spin_unlock(&pl330->lock);
-
pch->thread->req[0].desc = NULL;
pch->thread->req[1].desc = NULL;
pch->thread->req_running = -1;
+ spin_unlock(&pl330->lock);
+
power_down = pch->active;
pch->active = false;
--
2.17.1
next prev parent reply other threads:[~2018-09-07 0:46 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-07 0:38 [PATCH AUTOSEL 4.4 01/30] usb: usbtest: use irqsave() in USB's complete callback Sasha Levin
2018-09-07 0:38 ` [PATCH AUTOSEL 4.4 02/30] iommu/arm-smmu-v3: sync the OVACKFLG to PRIQ consumer register Sasha Levin
2018-09-07 0:38 ` [PATCH AUTOSEL 4.4 03/30] ALSA: msnd: Fix the default sample sizes Sasha Levin
2018-09-07 0:38 ` [PATCH AUTOSEL 4.4 04/30] ALSA: usb-audio: Fix multiple definitions in AU0828_DEVICE() macro Sasha Levin
2018-09-07 0:38 ` [PATCH AUTOSEL 4.4 05/30] xfrm: fix 'passing zero to ERR_PTR()' warning Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 06/30] gfs2: Special-case rindex for gfs2_grow Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 07/30] clk: imx6ul: fix missing of_node_put() Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 08/30] kbuild: add .DELETE_ON_ERROR special target Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 10/30] MIPS: ath79: fix system restart Sasha Levin
2018-09-07 0:39 ` Sasha Levin [this message]
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 11/30] media: videobuf2-core: check for q->error in vb2_core_qbuf() Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 12/30] mtd/maps: fix solutionengine.c printk format warnings Sasha Levin
2018-09-07 0:39 ` Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 14/30] iio: ad9523: Fix displayed phase Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 13/30] gfs2: Don't reject a supposedly full bitmap if we have blocks reserved Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 15/30] fbdev: omapfb: off by one in omapfb_register_client() Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 16/30] video: goldfishfb: fix memory leak on driver remove Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 17/30] fbdev/via: fix defined but not used warning Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 18/30] perf powerpc: Fix callchain ip filtering when return address is in a register Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 19/30] fbdev: Distinguish between interlaced and progressive modes Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 21/30] perf powerpc: Fix callchain ip filtering Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 20/30] ARM: exynos: Clear global variable on init error path Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 22/30] powerpc/powernv: opal_put_chars partial write fix Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 23/30] MIPS: jz4740: Bump zload address Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 24/30] mac80211: restrict delayed tailroom needed decrement Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 25/30] xen-netfront: fix queue name setting Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 26/30] arm64: dts: qcom: db410c: Fix Bluetooth LED trigger Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 28/30] s390/qeth: reset layer2 attribute on layer switch Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 27/30] s390/qeth: fix race in used-buffer accounting Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 29/30] platform/x86: toshiba_acpi: Fix defined but not used build warnings Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 4.4 30/30] crypto: sharah - Unregister correct algorithms for SAHARA 3 Sasha Levin
2018-09-07 5:43 ` [PATCH AUTOSEL 4.4 01/30] usb: usbtest: use irqsave() in USB's complete callback Greg Kroah-Hartman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180907003853.57942-9-alexander.levin@microsoft.com \
--to=alexander.levin@microsoft.com \
--cc=john@metanate.com \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=vkoul@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.