diff options
author | Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com> | 2013-02-10 12:39:04 +0100 |
---|---|---|
committer | Ohad Ben-Cohen <ohad@wizery.com> | 2013-04-05 08:47:49 +0300 |
commit | 1cd425b660bd5b4f41b9175b0b7bf3828ce88144 (patch) | |
tree | e26a51f212a7bc5703f2d9f5256d63027a1d618b /drivers/remoteproc | |
parent | b39599b7cb8f295205b04827ff82e3afec687cde (diff) |
remoteproc/ste: fix memory leak on shutdown
Fixes coherent memory leakage, caused by non-deallocated
firmware image chunk.
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com>
Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com>
Acked-by: Ido Yariv <ido@wizery.com>
[slightly edit subject and commit log]
Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
Diffstat (limited to 'drivers/remoteproc')
-rw-r--r-- | drivers/remoteproc/ste_modem_rproc.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/remoteproc/ste_modem_rproc.c b/drivers/remoteproc/ste_modem_rproc.c index a7743c06933..fb95c422005 100644 --- a/drivers/remoteproc/ste_modem_rproc.c +++ b/drivers/remoteproc/ste_modem_rproc.c @@ -240,6 +240,8 @@ static int sproc_drv_remove(struct platform_device *pdev) /* Unregister as remoteproc device */ rproc_del(sproc->rproc); + dma_free_coherent(sproc->rproc->dev.parent, SPROC_FW_SIZE, + sproc->fw_addr, sproc->fw_dma_addr); rproc_put(sproc->rproc); mdev->drv_data = NULL; @@ -297,10 +299,13 @@ static int sproc_probe(struct platform_device *pdev) /* Register as a remoteproc device */ err = rproc_add(rproc); if (err) - goto free_rproc; + goto free_mem; return 0; +free_mem: + dma_free_coherent(rproc->dev.parent, SPROC_FW_SIZE, + sproc->fw_addr, sproc->fw_dma_addr); free_rproc: /* Reset device data upon error */ mdev->drv_data = NULL; |