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 2/5] misc: fastrpc: Add secure device node support
Date: Thu, 25 Nov 2021 19:45:41 +0530 [thread overview]
Message-ID: <1637849744-24844-3-git-send-email-jeyr@codeaurora.org> (raw)
In-Reply-To: <1637849744-24844-1-git-send-email-jeyr@codeaurora.org>
Register and deregister secure device node. Check for device name during
device open get proper channel context.
Signed-off-by: Jeya R <jeyr@codeaurora.org>
---
drivers/misc/fastrpc.c | 33 +++++++++++++++++++++++++++++++--
1 file changed, 31 insertions(+), 2 deletions(-)
diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c
index 39aca77..0775554e 100644
--- a/drivers/misc/fastrpc.c
+++ b/drivers/misc/fastrpc.c
@@ -79,6 +79,7 @@
#define SENSORS_PD (2)
#define miscdev_to_cctx(d) container_of(d, struct fastrpc_channel_ctx, miscdev)
+#define securedev_to_cctx(d) container_of(d, struct fastrpc_channel_ctx, securedev)
static const char *domains[FASTRPC_DEV_MAX] = { "adsp", "mdsp",
"sdsp", "cdsp"};
@@ -213,6 +214,7 @@ struct fastrpc_channel_ctx {
struct idr ctx_idr;
struct list_head users;
struct miscdevice miscdev;
+ struct miscdevice securedev;
struct kref refcount;
};
@@ -1218,10 +1220,23 @@ static int fastrpc_device_release(struct inode *inode, struct file *file)
static int fastrpc_device_open(struct inode *inode, struct file *filp)
{
- struct fastrpc_channel_ctx *cctx = miscdev_to_cctx(filp->private_data);
+ struct fastrpc_channel_ctx *cctx = NULL;
struct fastrpc_user *fl = NULL;
+ struct miscdevice *currdev = NULL;
unsigned long flags;
+ if (!filp)
+ return -EFAULT;
+
+ currdev = (struct miscdevice *)(filp->private_data);
+ if (!currdev)
+ return -EFAULT;
+
+ if (strstr(currdev->name, "secure") != NULL)
+ cctx = securedev_to_cctx(filp->private_data);
+ else
+ cctx = miscdev_to_cctx(filp->private_data);
+
fl = kzalloc(sizeof(*fl), GFP_KERNEL);
if (!fl)
return -ENOMEM;
@@ -1644,6 +1659,15 @@ static int fastrpc_rpmsg_probe(struct rpmsg_device *rpdev)
kfree(data);
return err;
}
+ data->securedev.minor = MISC_DYNAMIC_MINOR;
+ data->securedev.name = devm_kasprintf(rdev, GFP_KERNEL,
+ "fastrpc-%s-secure", domains[domain_id]);
+ data->securedev.fops = &fastrpc_fops;
+ err = misc_register(&data->securedev);
+ if (err) {
+ kfree(data);
+ return err;
+ }
kref_init(&data->refcount);
@@ -1655,7 +1679,11 @@ static int fastrpc_rpmsg_probe(struct rpmsg_device *rpdev)
data->domain_id = domain_id;
data->rpdev = rpdev;
- return of_platform_populate(rdev->of_node, NULL, NULL, rdev);
+ err = of_platform_populate(rdev->of_node, NULL, NULL, rdev);
+ dev_info(rdev, "%s done for %s with nodes non-secure(%d), secure(%d) return: %d\n",
+ __func__, domains[domain_id],
+ data->miscdev.minor, data->securedev.minor, err);
+ return err;
}
static void fastrpc_notify_users(struct fastrpc_user *user)
@@ -1680,6 +1708,7 @@ static void fastrpc_rpmsg_remove(struct rpmsg_device *rpdev)
spin_unlock_irqrestore(&cctx->lock, flags);
misc_deregister(&cctx->miscdev);
+ misc_deregister(&cctx->securedev);
of_platform_depopulate(&rpdev->dev);
cctx->rpdev = NULL;
--
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 ` Jeya R [this message]
2021-11-25 14:55 ` [PATCH 2/5] misc: fastrpc: Add secure device node support 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 ` [PATCH 4/5] misc: fastrpc: reject non-secure node for secure domain Jeya R
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-3-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.