From: Jeya R <jeyr@codeaurora.org>
To: linux-arm-msm@vger.kernel.org, srinivas.kandagatla@linaro.org
Cc: Jeya R <jeyr@codeaurora.org>,
gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org,
fastrpc.upstream@qti.qualcomm.com
Subject: [PATCH 4/5] misc: fastrpc: reject non-secure node for secure domain
Date: Thu, 25 Nov 2021 19:45:43 +0530 [thread overview]
Message-ID: <1637849744-24844-5-git-send-email-jeyr@codeaurora.org> (raw)
In-Reply-To: <1637849744-24844-1-git-send-email-jeyr@codeaurora.org>
Reject session if domain is secure and device node is non-secure.
Signed-off-by: Jeya R <jeyr@codeaurora.org>
---
drivers/misc/fastrpc.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c
index a4e2e86..e377421 100644
--- a/drivers/misc/fastrpc.c
+++ b/drivers/misc/fastrpc.c
@@ -235,6 +235,7 @@ struct fastrpc_user {
spinlock_t lock;
/* lock for allocations */
struct mutex mutex;
+ int dev_minor;
};
static void fastrpc_free_map(struct kref *ref)
@@ -1017,6 +1018,15 @@ static int fastrpc_internal_invoke(struct fastrpc_user *fl, u32 kernel,
return err;
}
+static int is_session_rejected(struct fastrpc_user *fl) {
+ /* Check if the device node is non-secure and channel is secure*/
+ if ((fl->dev_minor == fl->cctx->miscdev.minor) && fl->cctx->secure) {
+ dev_err(&fl->cctx->rpdev->dev, "Cannot access secure channel\n");
+ return -EACCES;
+ }
+ return 0;
+}
+
static int fastrpc_init_create_process(struct fastrpc_user *fl,
char __user *argp)
{
@@ -1037,6 +1047,10 @@ static int fastrpc_init_create_process(struct fastrpc_user *fl,
} inbuf;
u32 sc;
+ err = is_session_rejected(fl);
+ if (err)
+ return err;
+
args = kcalloc(FASTRPC_CREATE_PROCESS_NARGS, sizeof(*args), GFP_KERNEL);
if (!args)
return -ENOMEM;
@@ -1225,6 +1239,7 @@ static int fastrpc_device_open(struct inode *inode, struct file *filp)
struct fastrpc_user *fl = NULL;
struct miscdevice *currdev = NULL;
unsigned long flags;
+ int dev_minor = MINOR(inode->i_rdev);
if (!filp)
return -EFAULT;
@@ -1254,6 +1269,7 @@ static int fastrpc_device_open(struct inode *inode, struct file *filp)
INIT_LIST_HEAD(&fl->user);
fl->tgid = current->tgid;
fl->cctx = cctx;
+ fl->dev_minor = dev_minor;
fl->sctx = fastrpc_session_alloc(cctx);
if (!fl->sctx) {
--
2.7.4
next prev parent reply other threads:[~2021-11-25 14:18 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-25 14:15 [PATCH 0/5] Add secure domains support Jeya R
2021-11-25 14:15 ` [PATCH 1/5] dt-bindings: misc: convert fastrpc bindings to yaml and add property Jeya R
2021-11-25 14:41 ` Srinivas Kandagatla
2021-11-26 4:54 ` jeyr
2021-11-25 14:15 ` [PATCH 2/5] misc: fastrpc: Add secure device node support Jeya R
2021-11-25 14:55 ` Srinivas Kandagatla
2021-11-25 15:45 ` Greg KH
2021-11-25 14:15 ` [PATCH 3/5] misc: fastrpc: Set channel as secure Jeya R
2021-11-25 14:15 ` Jeya R [this message]
2021-11-25 14:15 ` [PATCH 5/5] arm64: dts: qcom: add non-secure domain property to fastrpc nodes Jeya R
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1637849744-24844-5-git-send-email-jeyr@codeaurora.org \
--to=jeyr@codeaurora.org \
--cc=fastrpc.upstream@qti.qualcomm.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=srinivas.kandagatla@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.