From: Baolin Wang <baolin.wang@linaro.org> To: dan.j.williams@intel.com, vkoul@kernel.org Cc: eric.long@unisoc.com, orsonzhai@gmail.com, zhang.lyra@gmail.com, broonie@kernel.org, baolin.wang@linaro.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [2/7] dmaengine: sprd: Add validation of current descriptor in irq handler Date: Mon, 15 Apr 2019 20:14:56 +0800 [thread overview] Message-ID: <e2f3b8f2f5391565d0662d98524acf239ae8da6e.1555330115.git.baolin.wang@linaro.org> (raw) When user terminates one DMA channel to free all its descriptors, but at the same time one transaction interrupt was triggered possibly, now we should not handle this interrupt by validating if the 'schan->cur_desc' was set as NULL to avoid crashing the kernel. Signed-off-by: Baolin Wang <baolin.wang@linaro.org> --- drivers/dma/sprd-dma.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/dma/sprd-dma.c b/drivers/dma/sprd-dma.c index e29342a..431e289 100644 --- a/drivers/dma/sprd-dma.c +++ b/drivers/dma/sprd-dma.c @@ -552,12 +552,17 @@ static irqreturn_t dma_irq_handle(int irq, void *dev_id) schan = &sdev->channels[i]; spin_lock(&schan->vc.lock); + + sdesc = schan->cur_desc; + if (!sdesc) { + spin_unlock(&schan->vc.lock); + return IRQ_HANDLED; + } + int_type = sprd_dma_get_int_type(schan); req_type = sprd_dma_get_req_type(schan); sprd_dma_clear_int(schan); - sdesc = schan->cur_desc; - /* cyclic mode schedule callback */ cyclic = schan->linklist.phy_addr ? true : false; if (cyclic == true) {
WARNING: multiple messages have this Message-ID (diff)
From: Baolin Wang <baolin.wang@linaro.org> To: dan.j.williams@intel.com, vkoul@kernel.org Cc: eric.long@unisoc.com, orsonzhai@gmail.com, zhang.lyra@gmail.com, broonie@kernel.org, baolin.wang@linaro.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/7] dmaengine: sprd: Add validation of current descriptor in irq handler Date: Mon, 15 Apr 2019 20:14:56 +0800 [thread overview] Message-ID: <e2f3b8f2f5391565d0662d98524acf239ae8da6e.1555330115.git.baolin.wang@linaro.org> (raw) Message-ID: <20190415121456.jf8064QzGCwihNdmb4tAvg_L9GiGypoeut5JYp7KuUM@z> (raw) In-Reply-To: <cover.1555330115.git.baolin.wang@linaro.org> In-Reply-To: <cover.1555330115.git.baolin.wang@linaro.org> When user terminates one DMA channel to free all its descriptors, but at the same time one transaction interrupt was triggered possibly, now we should not handle this interrupt by validating if the 'schan->cur_desc' was set as NULL to avoid crashing the kernel. Signed-off-by: Baolin Wang <baolin.wang@linaro.org> --- drivers/dma/sprd-dma.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/dma/sprd-dma.c b/drivers/dma/sprd-dma.c index e29342a..431e289 100644 --- a/drivers/dma/sprd-dma.c +++ b/drivers/dma/sprd-dma.c @@ -552,12 +552,17 @@ static irqreturn_t dma_irq_handle(int irq, void *dev_id) schan = &sdev->channels[i]; spin_lock(&schan->vc.lock); + + sdesc = schan->cur_desc; + if (!sdesc) { + spin_unlock(&schan->vc.lock); + return IRQ_HANDLED; + } + int_type = sprd_dma_get_int_type(schan); req_type = sprd_dma_get_req_type(schan); sprd_dma_clear_int(schan); - sdesc = schan->cur_desc; - /* cyclic mode schedule callback */ cyclic = schan->linklist.phy_addr ? true : false; if (cyclic == true) { -- 1.7.9.5
next prev reply other threads:[~2019-04-15 12:14 UTC|newest] Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-04-15 12:14 [PATCH 0/7] Fix some bugs and add new feature for Spreadtrum DMA engine Baolin Wang 2019-04-15 12:14 ` [1/7] dmaengine: sprd: Fix the possible crash when getting engine status Baolin Wang 2019-04-15 12:14 ` [PATCH 1/7] " Baolin Wang 2019-04-29 11:35 ` [1/7] " Vinod Koul 2019-04-29 11:35 ` [PATCH 1/7] " Vinod Koul 2019-04-29 11:49 ` [1/7] " Baolin Wang 2019-04-29 11:49 ` [PATCH 1/7] " Baolin Wang 2019-04-29 12:02 ` [1/7] " Vinod Koul 2019-04-29 12:02 ` [PATCH 1/7] " Vinod Koul 2019-04-15 12:14 ` Baolin Wang [this message] 2019-04-15 12:14 ` [PATCH 2/7] dmaengine: sprd: Add validation of current descriptor in irq handler Baolin Wang 2019-04-15 12:14 ` [3/7] dmaengine: sprd: Fix the incorrect start for 2-stage destination channels Baolin Wang 2019-04-15 12:14 ` [PATCH 3/7] " Baolin Wang 2019-04-15 12:14 ` [4/7] dmaengine: sprd: Add device validation to support multiple controllers Baolin Wang 2019-04-15 12:14 ` [PATCH 4/7] " Baolin Wang 2019-04-29 11:57 ` [4/7] " Vinod Koul 2019-04-29 11:57 ` [PATCH 4/7] " Vinod Koul 2019-04-29 12:20 ` [4/7] " Baolin Wang 2019-04-29 12:20 ` [PATCH 4/7] " Baolin Wang 2019-04-29 14:05 ` [4/7] " Vinod Koul 2019-04-29 14:05 ` [PATCH 4/7] " Vinod Koul 2019-04-30 5:30 ` [4/7] " Baolin Wang 2019-04-30 5:30 ` [PATCH 4/7] " Baolin Wang 2019-04-30 8:29 ` [4/7] " Vinod Koul 2019-04-30 8:29 ` [PATCH 4/7] " Vinod Koul 2019-04-30 8:34 ` [4/7] " Baolin Wang 2019-04-30 8:34 ` [PATCH 4/7] " Baolin Wang 2019-04-30 8:53 ` [4/7] " Baolin Wang 2019-04-30 8:53 ` [PATCH 4/7] " Baolin Wang 2019-05-02 6:01 ` [4/7] " Vinod Koul 2019-05-02 6:01 ` [PATCH 4/7] " Vinod Koul 2019-05-06 4:48 ` Baolin Wang 2019-04-15 12:14 ` [5/7] dmaengine: sprd: Fix block length overflow Baolin Wang 2019-04-15 12:14 ` [PATCH 5/7] " Baolin Wang 2019-04-15 12:15 ` [6/7] dmaengine: sprd: Fix the right place to configure 2-stage transfer Baolin Wang 2019-04-15 12:15 ` [PATCH 6/7] " Baolin Wang 2019-04-15 12:15 ` [7/7] dmaengine: sprd: Add interrupt support for " Baolin Wang 2019-04-15 12:15 ` [PATCH 7/7] " Baolin Wang 2019-04-29 12:01 ` [7/7] " Vinod Koul 2019-04-29 12:01 ` [PATCH 7/7] " Vinod Koul 2019-04-29 12:11 ` [7/7] " Baolin Wang 2019-04-29 12:11 ` [PATCH 7/7] " Baolin Wang 2019-04-29 14:10 ` [7/7] " Vinod Koul 2019-04-29 14:10 ` [PATCH 7/7] " Vinod Koul 2019-04-30 5:37 ` [7/7] " Baolin Wang 2019-04-30 5:37 ` [PATCH 7/7] " Baolin Wang
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=e2f3b8f2f5391565d0662d98524acf239ae8da6e.1555330115.git.baolin.wang@linaro.org \ --to=baolin.wang@linaro.org \ --cc=broonie@kernel.org \ --cc=dan.j.williams@intel.com \ --cc=dmaengine@vger.kernel.org \ --cc=eric.long@unisoc.com \ --cc=linux-kernel@vger.kernel.org \ --cc=orsonzhai@gmail.com \ --cc=vkoul@kernel.org \ --cc=zhang.lyra@gmail.com \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).