lkml.org 
[lkml]   [2019]   [Apr]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/7] dmaengine: sprd: Add validation of current descriptor in irq handler
    Date
    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
    \
     
     \ /
      Last update: 2019-04-15 14:16    [W:6.033 / U:0.660 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site