summaryrefslogtreecommitdiff
path: root/drivers/misc/fastrpc.c
diff options
context:
space:
mode:
authorThierry Escande <thierry.escande@linaro.org>2019-02-15 13:40:07 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-02-19 16:50:11 +0300
commit7c11df42d0c7bf5b3dd743a21b4872e7b26ca2a2 (patch)
tree7c41fcba92c303c772a30a32712e07eda5f59e3c /drivers/misc/fastrpc.c
parentc0fae22f4863731ffad01513034b4b019f64004f (diff)
downloadlinux-7c11df42d0c7bf5b3dd743a21b4872e7b26ca2a2.tar.xz
misc: fastrpc: Fix device_open when no session is available
This change fixes fastrpc_device_open() when no session is available and return an error in such case. Signed-off-by: Thierry Escande <thierry.escande@linaro.org> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/misc/fastrpc.c')
-rw-r--r--drivers/misc/fastrpc.c11
1 files changed, 10 insertions, 1 deletions
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;
}