• Niklas Söderlund's avatar
    dmaengine: rcar-dmac: wait for ISR to finish before freeing resources · a1ed64ef
    Niklas Söderlund authored
    This fixes a race condition where the channel resources could be freed
    before the ISR had finished running resulting in a NULL pointer
    reference from the ISR.
    
    [  167.148934] Unable to handle kernel NULL pointer dereference at virtual address 00000000
    [  167.157051] pgd = ffff80003c641000
    [  167.160449] [00000000] *pgd=000000007c507003, *pud=000000007c4ff003, *pmd=0000000000000000
    [  167.168719] Internal error: Oops: 96000046 [#1] PREEMPT SMP
    [  167.174289] Modules linked in:
    [  167.177348] CPU: 3 PID: 10547 Comm: dma_ioctl Not tainted 4.11.0-rc1-00001-g8d92afddc2f6633a #73
    [  167.186131] Hardware name: Renesas Salvator-X board based on r8a7795 (DT)
    [  167.192917] task: ffff80003a411a00 task.stack: ffff80003bcd4000
    [  167.198850] PC is at rcar_dmac_chan_prep_sg+0xe0/0x400
    [  167.203985] LR is at rcar_dmac_chan_prep_sg+0x48/0x400
    
    Based of previous work by:
        Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>.
    Signed-off-by: default avatarNiklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
    a1ed64ef
rcar-dmac.c 50.9 KB