diff options
author | Aditya Pakki <pakki001@umn.edu> | 2018-12-24 11:41:54 -0600 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2019-01-07 09:50:29 +0530 |
commit | 7c97381e7a9a5ec359007c0d491a143e3d9f787c (patch) | |
tree | d53a0efb6f3693bf8d8168dcfc706f822caeb8ae /drivers/dma | |
parent | bfeffd155283772bbe78c6a05dec7c0128ee500c (diff) | |
download | linux-7c97381e7a9a5ec359007c0d491a143e3d9f787c.tar.gz linux-7c97381e7a9a5ec359007c0d491a143e3d9f787c.tar.bz2 linux-7c97381e7a9a5ec359007c0d491a143e3d9f787c.zip |
dmaengine: mv_xor: Fix a missing check in mv_xor_channel_add
dma_async_device_register() may fail and return an error. The capabilities
checked in mv_xor_channel_add() are not complete. The fix handles the
error by freeing the resources.
Signed-off-by: Aditya Pakki <pakki001@umn.edu>
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers/dma')
-rw-r--r-- | drivers/dma/mv_xor.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/dma/mv_xor.c b/drivers/dma/mv_xor.c index 7f595355fb79..e733c5eeaabc 100644 --- a/drivers/dma/mv_xor.c +++ b/drivers/dma/mv_xor.c @@ -1153,7 +1153,10 @@ mv_xor_channel_add(struct mv_xor_device *xordev, dma_has_cap(DMA_MEMCPY, dma_dev->cap_mask) ? "cpy " : "", dma_has_cap(DMA_INTERRUPT, dma_dev->cap_mask) ? "intr " : ""); - dma_async_device_register(dma_dev); + ret = dma_async_device_register(dma_dev); + if (ret) + goto err_free_irq; + return mv_chan; err_free_irq: |