Module: xenomai-3 Branch: next Commit: 655dda153fbaba31246963f3011fff194fbecaa8 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=655dda153fbaba31246963f3011fff194fbecaa8
Author: Philippe Gerum <r...@xenomai.org> Date: Sat Mar 21 18:11:29 2015 +0100 cobalt/posix/mutex: fix release of shared state to UMM heap --- kernel/cobalt/posix/mutex.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/kernel/cobalt/posix/mutex.c b/kernel/cobalt/posix/mutex.c index 0a21b36..d659b46 100644 --- a/kernel/cobalt/posix/mutex.c +++ b/kernel/cobalt/posix/mutex.c @@ -28,7 +28,7 @@ static int cobalt_mutex_init_inner(struct cobalt_mutex_shadow *shadow, const struct cobalt_mutexattr *attr) { int synch_flags = XNSYNCH_PRIO | XNSYNCH_OWNER; - struct cobalt_ppd *sys_ppd; + struct cobalt_umm *umm; spl_t s; int err; @@ -36,12 +36,12 @@ static int cobalt_mutex_init_inner(struct cobalt_mutex_shadow *shadow, if (err < 0) return err; - sys_ppd = cobalt_ppd_get(attr->pshared); + umm = &cobalt_ppd_get(attr->pshared)->umm; shadow->handle = mutex->resnode.handle; shadow->magic = COBALT_MUTEX_MAGIC; shadow->lockcnt = 0; shadow->attr = *attr; - shadow->state_offset = cobalt_umm_offset(&sys_ppd->umm, state); + shadow->state_offset = cobalt_umm_offset(umm, state); if (attr->protocol == PTHREAD_PRIO_INHERIT) synch_flags |= XNSYNCH_PIP; @@ -386,10 +386,12 @@ COBALT_SYSCALL(mutex_unlock, nonrestartable, void cobalt_mutex_reclaim(struct cobalt_resnode *node, spl_t s) { + struct cobalt_mutex_state *state; struct cobalt_mutex *mutex; int pshared; mutex = container_of(node, struct cobalt_mutex, resnode); + state = container_of(mutex->synchbase.fastlock, struct cobalt_mutex_state, owner); pshared = mutex->attr.pshared; xnregistry_remove(node->handle); cobalt_del_resource(node); @@ -397,7 +399,6 @@ void cobalt_mutex_reclaim(struct cobalt_resnode *node, spl_t s) cobalt_mark_deleted(mutex); xnlock_put_irqrestore(&nklock, s); - cobalt_umm_free(&cobalt_ppd_get(pshared)->umm, - mutex->synchbase.fastlock); + cobalt_umm_free(&cobalt_ppd_get(pshared)->umm, state); xnfree(mutex); } _______________________________________________ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git