Commit 1cd425b6 authored by Dmitry Tarnyagin's avatar Dmitry Tarnyagin Committed by Ohad Ben-Cohen

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: default avatarDmitry Tarnyagin <dmitry.tarnyagin@stericsson.com>
Signed-off-by: default avatarSjur Brændeland <sjur.brandeland@stericsson.com>
Acked-by: default avatarIdo Yariv <ido@wizery.com>
[slightly edit subject and commit log]
Signed-off-by: default avatarOhad Ben-Cohen <ohad@wizery.com>
parent b39599b7
...@@ -240,6 +240,8 @@ static int sproc_drv_remove(struct platform_device *pdev) ...@@ -240,6 +240,8 @@ static int sproc_drv_remove(struct platform_device *pdev)
/* Unregister as remoteproc device */ /* Unregister as remoteproc device */
rproc_del(sproc->rproc); 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); rproc_put(sproc->rproc);
mdev->drv_data = NULL; mdev->drv_data = NULL;
...@@ -297,10 +299,13 @@ static int sproc_probe(struct platform_device *pdev) ...@@ -297,10 +299,13 @@ static int sproc_probe(struct platform_device *pdev)
/* Register as a remoteproc device */ /* Register as a remoteproc device */
err = rproc_add(rproc); err = rproc_add(rproc);
if (err) if (err)
goto free_rproc; goto free_mem;
return 0; return 0;
free_mem:
dma_free_coherent(rproc->dev.parent, SPROC_FW_SIZE,
sproc->fw_addr, sproc->fw_dma_addr);
free_rproc: free_rproc:
/* Reset device data upon error */ /* Reset device data upon error */
mdev->drv_data = NULL; mdev->drv_data = NULL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment