summaryrefslogtreecommitdiff
path: root/drivers/tty/serial/imx.c
diff options
context:
space:
mode:
authorDirk Behme <dirk.behme@de.bosch.com>2014-12-09 18:11:26 +0900
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-01-09 14:23:07 -0800
commit2464982174a1886b56b445b0503b331008a626fe (patch)
tree3d68683da8002103ba4c4d071a3c37c9fcf4fe2f /drivers/tty/serial/imx.c
parent7942f8577f2a63b7a6b8cd70f5354a608b30fead (diff)
serial: imx: unmap sg in case of dmaengine_prep_slave_sg() failure
In case dmaengine_prep_slave_sg() fails, add the missing dma_unmap_sg(). Signed-off-by: Dirk Behme <dirk.behme@de.bosch.com> Signed-off-by: Anton Bondarenko <anton_bondarenko@mentor.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty/serial/imx.c')
-rw-r--r--drivers/tty/serial/imx.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
index 5cea7d257426..b4cf24c64a15 100644
--- a/drivers/tty/serial/imx.c
+++ b/drivers/tty/serial/imx.c
@@ -558,6 +558,8 @@ static void imx_dma_tx(struct imx_port *sport)
desc = dmaengine_prep_slave_sg(chan, sgl, sport->dma_tx_nents,
DMA_MEM_TO_DEV, DMA_PREP_INTERRUPT);
if (!desc) {
+ dma_unmap_sg(dev, sgl, sport->dma_tx_nents,
+ DMA_TO_DEVICE);
dev_err(dev, "We cannot prepare for the TX slave dma!\n");
return;
}
@@ -947,6 +949,7 @@ static int start_rx_dma(struct imx_port *sport)
desc = dmaengine_prep_slave_sg(chan, sgl, 1, DMA_DEV_TO_MEM,
DMA_PREP_INTERRUPT);
if (!desc) {
+ dma_unmap_sg(dev, sgl, 1, DMA_FROM_DEVICE);
dev_err(dev, "We cannot prepare for the RX slave dma!\n");
return -EINVAL;
}