From 4195851845f2afa3a25b9172341dfe5d99eae569 Mon Sep 17 00:00:00 2001 From: chao an Date: Wed, 25 Sep 2024 08:37:05 +0800 Subject: [PATCH] drivers/rpmsg: replace metal_list_for_each to safety version replace metal_list_for_each to safety version to avoid invalid access to deleted node in destory flow Signed-off-by: chao an --- drivers/rpmsg/rpmsg.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/rpmsg/rpmsg.c b/drivers/rpmsg/rpmsg.c index 19d447f3090..9af3cf69443 100644 --- a/drivers/rpmsg/rpmsg.c +++ b/drivers/rpmsg/rpmsg.c @@ -354,7 +354,7 @@ void rpmsg_ns_bind(FAR struct rpmsg_device *rdev, FAR void *cb_priv = cb->priv; nxrmutex_unlock(&g_rpmsg_lock); - DEBUGASSERT(ns_bind != NULL); + ns_bind(rdev, cb_priv, name, dest); return; } @@ -448,7 +448,7 @@ void rpmsg_device_destory(FAR struct rpmsg_s *rpmsg) /* Broadcast device_destroy to all registers */ nxrmutex_lock(&g_rpmsg_lock); - metal_list_for_each(&g_rpmsg_cb, node) + metal_list_for_each_safe(&g_rpmsg_cb, tmp, node) { FAR struct rpmsg_cb_s *cb = metal_container_of(node, struct rpmsg_cb_s, node);