From 41f4f4a5407eb4444c1ac0f4c67a953b4d387a06 Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Fri, 24 Apr 2020 02:22:15 +0800 Subject: [PATCH] rpmsg: return fail if either source or destination address is zero to help detect rpmsg_send is called before the endpoint initialization or after the endpoint uninitialization Signed-off-by: Xiang Xiao --- lib/include/openamp/rpmsg.h | 3 +-- lib/rpmsg/rpmsg.c | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/include/openamp/rpmsg.h b/lib/include/openamp/rpmsg.h index 700045366..1279ea26d 100644 --- a/lib/include/openamp/rpmsg.h +++ b/lib/include/openamp/rpmsg.h @@ -146,8 +146,7 @@ int rpmsg_send_offchannel_raw(struct rpmsg_endpoint *ept, uint32_t src, */ static inline unsigned int is_rpmsg_ept_ready(struct rpmsg_endpoint *ept) { - return (ept->dest_addr != RPMSG_ADDR_ANY) && - (ept->addr != RPMSG_ADDR_ANY); + return ept && ept->rdev && ept->dest_addr && ept->dest_addr != RPMSG_ADDR_ANY; } /** diff --git a/lib/rpmsg/rpmsg.c b/lib/rpmsg/rpmsg.c index e187f5dd4..eb1b48026 100644 --- a/lib/rpmsg/rpmsg.c +++ b/lib/rpmsg/rpmsg.c @@ -115,7 +115,7 @@ int rpmsg_send_offchannel_raw(struct rpmsg_endpoint *ept, uint32_t src, { struct rpmsg_device *rdev; - if (!ept || !ept->rdev || !data || dst == RPMSG_ADDR_ANY) + if (!ept || !ept->rdev || !data || !dst || dst == RPMSG_ADDR_ANY) return RPMSG_ERR_PARAM; rdev = ept->rdev;