[Linux-stm32] [PATCH v2 11/16] rpmsg: char: check destination address is not null
Arnaud Pouliquen
arnaud.pouliquen at foss.st.com
Tue Dec 22 10:57:21 UTC 2020
The name service announcement is not sent if no endpoint is created by
default. If the destination address is not precised by the
application when creating the device (thanks to the RPMsg CTRL interface),
it is not possible to have a valid RPMsg channel.
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen at foss.st.com>
---
drivers/rpmsg/rpmsg_char.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/rpmsg/rpmsg_char.c b/drivers/rpmsg/rpmsg_char.c
index 4b0674a2e3e9..8b1928594d10 100644
--- a/drivers/rpmsg/rpmsg_char.c
+++ b/drivers/rpmsg/rpmsg_char.c
@@ -305,6 +305,16 @@ static int rpmsg_chrdev_probe(struct rpmsg_device *rpdev)
struct device *dev;
int ret;
+ /* There is not ept created by default. As consequence there is not NS
+ * announcement and the destination address has to be set.
+ * this limitation could be solved in future by adding a helper in
+ * rpmsg_ns.
+ */
+ if (rpdev->dst == RPMSG_ADDR_ANY) {
+ dev_err(dev, "destination address invalid (%d)\n", rpdev->dst);
+ return -EINVAL;
+ }
+
eptdev = kzalloc(sizeof(*eptdev), GFP_KERNEL);
if (!eptdev)
return -ENOMEM;
--
2.17.1
More information about the Linux-stm32
mailing list