Do the necessary house-keeping if the allocated memory wont be used

Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-or...@linaro.org>
---
 drivers/misc/fastrpc.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c
index 98603e235cf0..c790585da14c 100644
--- a/drivers/misc/fastrpc.c
+++ b/drivers/misc/fastrpc.c
@@ -279,8 +279,11 @@ static int fastrpc_buf_alloc(struct fastrpc_user *fl, 
struct device *dev,
 
        buf->virt = dma_alloc_coherent(dev, buf->size, (dma_addr_t *)&buf->phys,
                                       GFP_KERNEL);
-       if (!buf->virt)
+       if (!buf->virt) {
+               mutex_destroy(&buf->lock);
+               kfree(buf);
                return -ENOMEM;
+       }
 
        if (fl->sctx && fl->sctx->sid)
                buf->phys += ((u64)fl->sctx->sid << 32);
-- 
2.21.0

Reply via email to