Skip to content

Commit 5298ca7

Browse files
rpmsg: rpmsg_unregister_endpoint management cleanup
to simplify the work in the furture Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
1 parent 20292c5 commit 5298ca7

1 file changed

Lines changed: 13 additions & 15 deletions

File tree

lib/rpmsg/rpmsg.c

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -176,17 +176,14 @@ struct rpmsg_endpoint *rpmsg_get_endpoint(struct rpmsg_device *rdev,
176176

177177
static void rpmsg_unregister_endpoint(struct rpmsg_endpoint *ept)
178178
{
179-
struct rpmsg_device *rdev;
180-
181-
if (!ept)
182-
return;
183-
184-
rdev = ept->rdev;
179+
struct rpmsg_device *rdev = ept->rdev;
185180

181+
metal_mutex_acquire(&rdev->lock);
186182
if (ept->addr != RPMSG_ADDR_ANY)
187183
rpmsg_release_address(rdev->bitmap, RPMSG_ADDR_BMP_SIZE,
188184
ept->addr);
189185
metal_list_del(&ept->node);
186+
metal_mutex_release(&rdev->lock);
190187
}
191188

192189
void rpmsg_register_endpoint(struct rpmsg_device *rdev,
@@ -230,15 +227,15 @@ int rpmsg_create_ept(struct rpmsg_endpoint *ept, struct rpmsg_device *rdev,
230227

231228
rpmsg_init_ept(ept, name, addr, dest, cb, unbind_cb);
232229
rpmsg_register_endpoint(rdev, ept);
230+
metal_mutex_release(&rdev->lock);
233231

234-
if (rdev->support_ns && ept->dest_addr == RPMSG_ADDR_ANY) {
235-
/* Send NS announcement to remote processor */
236-
metal_mutex_release(&rdev->lock);
232+
/* Send NS announcement to remote processor */
233+
if (rdev->support_ns && ept->dest_addr == RPMSG_ADDR_ANY)
237234
status = rpmsg_send_ns_message(ept, RPMSG_NS_CREATE);
238-
metal_mutex_acquire(&rdev->lock);
239-
if (status)
240-
rpmsg_unregister_endpoint(ept);
241-
}
235+
236+
if (status)
237+
rpmsg_unregister_endpoint(ept);
238+
return status;
242239

243240
ret_status:
244241
metal_mutex_release(&rdev->lock);
@@ -261,9 +258,10 @@ void rpmsg_destroy_ept(struct rpmsg_endpoint *ept)
261258
return;
262259

263260
rdev = ept->rdev;
261+
if (!rdev)
262+
return;
263+
264264
if (ept->name[0] && rdev->support_ns && ept->addr != RPMSG_NS_EPT_ADDR)
265265
(void)rpmsg_send_ns_message(ept, RPMSG_NS_DESTROY);
266-
metal_mutex_acquire(&rdev->lock);
267266
rpmsg_unregister_endpoint(ept);
268-
metal_mutex_release(&rdev->lock);
269267
}

0 commit comments

Comments
 (0)