From: Thierry Escande <thierry.esca...@linaro.org>

This change fixes fastrpc_device_open() when no session is available and
return an error in such case.

Signed-off-by: Thierry Escande <thierry.esca...@linaro.org>
Signed-off-by: Srinivas Kandagatla <srinivas.kandaga...@linaro.org>
---
 drivers/misc/fastrpc.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c
index 4b0db33896df..89aec17738ef 100644
--- a/drivers/misc/fastrpc.c
+++ b/drivers/misc/fastrpc.c
@@ -1016,10 +1016,19 @@ static int fastrpc_device_open(struct inode *inode, 
struct file *filp)
        INIT_LIST_HEAD(&fl->user);
        fl->tgid = current->tgid;
        fl->cctx = cctx;
+
+       fl->sctx = fastrpc_session_alloc(cctx);
+       if (!fl->sctx) {
+               dev_err(&cctx->rpdev->dev, "No session available\n");
+               mutex_destroy(&fl->mutex);
+               kfree(fl);
+
+               return -EBUSY;
+       }
+
        spin_lock(&cctx->lock);
        list_add_tail(&fl->user, &cctx->users);
        spin_unlock(&cctx->lock);
-       fl->sctx = fastrpc_session_alloc(cctx);
 
        return 0;
 }
-- 
2.20.1

Reply via email to