Module: xenomai-head Branch: master Commit: 9300cdb3a06befc7085bf95407a22c391259701c URL: http://git.xenomai.org/?p=xenomai-head.git;a=commit;h=9300cdb3a06befc7085bf95407a22c391259701c
Author: Gilles Chanteperdrix <gilles.chanteperd...@xenomai.org> Date: Tue Jun 28 21:08:06 2011 +0200 posix: fix leak in user-space named semaphores --- ksrc/skins/posix/syscall.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ksrc/skins/posix/syscall.c b/ksrc/skins/posix/syscall.c index 3c7f7ee..c9e84a6 100644 --- a/ksrc/skins/posix/syscall.c +++ b/ksrc/skins/posix/syscall.c @@ -718,17 +718,20 @@ static int __sem_close(struct pt_regs *regs) usm = assoc2usem(assoc); - if ((closed = (--usm->refcnt == 0))) + err = sem_close(&sm.native_sem); + + if (!err && (closed = (--usm->refcnt == 0))) pse51_assoc_remove(&pse51_queues()->usems, (u_long)sm.shadow_sem.sem); - err = sem_close(&sm.native_sem); - xnlock_put_irqrestore(&pse51_assoc_lock, s); if (err) return -thread_get_errno(); + if (usm->refcnt == 0) + xnfree(usm); + return __xn_safe_copy_to_user((void __user *)__xn_reg_arg2(regs), &closed, sizeof(int)); } _______________________________________________ Xenomai-git mailing list Xenomai-git@gna.org https://mail.gna.org/listinfo/xenomai-git