Skip to content

Commit 2a42a87

Browse files
rpmsg: move the lock to rpmsg_unregister_endpoint
to simplify the work in the furture Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
1 parent 5057ef5 commit 2a42a87

1 file changed

Lines changed: 10 additions & 9 deletions

File tree

lib/rpmsg/rpmsg.c

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -181,11 +181,13 @@ static void rpmsg_unregister_endpoint(struct rpmsg_endpoint *ept)
181181
{
182182
struct rpmsg_device *rdev = ept->rdev;
183183

184+
metal_mutex_acquire(&rdev->lock);
184185
if (ept->addr != RPMSG_ADDR_ANY)
185186
rpmsg_release_address(rdev->bitmap, RPMSG_ADDR_BMP_SIZE,
186187
ept->addr);
187188
metal_list_del(&ept->node);
188189
ept->rdev = NULL;
190+
metal_mutex_release(&rdev->lock);
189191
}
190192

191193
void rpmsg_register_endpoint(struct rpmsg_device *rdev,
@@ -229,15 +231,16 @@ int rpmsg_create_ept(struct rpmsg_endpoint *ept, struct rpmsg_device *rdev,
229231

230232
rpmsg_init_ept(ept, name, addr, dest, cb, unbind_cb);
231233
rpmsg_register_endpoint(rdev, ept);
234+
metal_mutex_release(&rdev->lock);
232235

233-
if (rdev->support_ns && ept->dest_addr == RPMSG_ADDR_ANY) {
234-
/* Send NS announcement to remote processor */
235-
metal_mutex_release(&rdev->lock);
236+
/* Send NS announcement to remote processor */
237+
if (ept->name[0] && rdev->support_ns &&
238+
ept->dest_addr == RPMSG_ADDR_ANY)
236239
status = rpmsg_send_ns_message(ept, RPMSG_NS_CREATE);
237-
metal_mutex_acquire(&rdev->lock);
238-
if (status)
239-
rpmsg_unregister_endpoint(ept);
240-
}
240+
241+
if (status)
242+
rpmsg_unregister_endpoint(ept);
243+
return status;
241244

242245
ret_status:
243246
metal_mutex_release(&rdev->lock);
@@ -262,7 +265,5 @@ void rpmsg_destroy_ept(struct rpmsg_endpoint *ept)
262265
rdev = ept->rdev;
263266
if (ept->name[0] && rdev->support_ns && ept->addr != RPMSG_NS_EPT_ADDR)
264267
(void)rpmsg_send_ns_message(ept, RPMSG_NS_DESTROY);
265-
metal_mutex_acquire(&rdev->lock);
266268
rpmsg_unregister_endpoint(ept);
267-
metal_mutex_release(&rdev->lock);
268269
}

0 commit comments

Comments
 (0)