]> git.baikalelectronics.ru Git - kernel.git/commit
dmaengine/ste_dma40: fix Oops due to double free of client descriptor
authorPer Forlin <per.forlin@linaro.org>
Mon, 29 Aug 2011 11:33:34 +0000 (13:33 +0200)
committerVinod Koul <vinod.koul@intel.com>
Mon, 5 Sep 2011 11:37:58 +0000 (17:07 +0530)
commitbaf8f4b8d0c088066cc16298c02bc6a5b17cdd20
tree3e641c685e8d97376c36b9b90c6717fbce405cf6
parentc2ea3df0e84ae8bda681ec6e6805e15ffcb1cf0d
dmaengine/ste_dma40: fix Oops due to double free of client descriptor

The client list may exist in two lists at the same time. This makes free
fail since the same desc is freed multiple times. Remove desc from
client list when adding it to the pending queue. Move free of client owned
descriptors from free_dma() to terminate_all().

Unable to handle kernel paging request at virtual address 00100104
pgd = dea8c000
[00100104] *pgd=1ea62831, *pte=00000000, *ppte=00000000
Internal error: Oops: 817 [#1] PREEMPT SMP
Modules linked in:
CPU: 0    Not tainted  (3.1.0-rc3+ #58)
PC is at d40_free_chan_resources+0x64/0x330

Signed-off-by: Per Forlin <per.forlin@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
drivers/dma/ste_dma40.c