Module: xenomai-2.5 Branch: master Commit: cb3cc0959ce7f8c41dcff6073e7513c81c445a0a URL: http://git.xenomai.org/?p=xenomai-2.5.git;a=commit;h=cb3cc0959ce7f8c41dcff6073e7513c81c445a0a
Author: Jan Kiszka <jan.kis...@siemens.com> Date: Fri Feb 26 18:42:35 2010 +0100 RTDM+POSIX: Avoid leaking binding objects on errors We need to release the allocated xnselect_binding if we fail to hook it into the select block. Signed-off-by: Jan Kiszka <jan.kis...@siemens.com> --- ksrc/skins/posix/mq.c | 1 + ksrc/skins/rtdm/drvlib.c | 6 ++++++ 2 files changed, 7 insertions(+), 0 deletions(-) diff --git a/ksrc/skins/posix/mq.c b/ksrc/skins/posix/mq.c index 11f47c0..02b59fb 100644 --- a/ksrc/skins/posix/mq.c +++ b/ksrc/skins/posix/mq.c @@ -1284,6 +1284,7 @@ int pse51_mq_select_bind(mqd_t fd, struct xnselector *selector, unlock_and_error: xnlock_put_irqrestore(&nklock, s); + xnfree(binding); return err; } #endif /* CONFIG_XENO_OPT_POSIX_SELECT */ diff --git a/ksrc/skins/rtdm/drvlib.c b/ksrc/skins/rtdm/drvlib.c index 5181108..637f99e 100644 --- a/ksrc/skins/rtdm/drvlib.c +++ b/ksrc/skins/rtdm/drvlib.c @@ -1089,6 +1089,9 @@ int rtdm_event_select_bind(rtdm_event_t *event, rtdm_selector_t *selector, RTDM_EVENT_PENDING)); xnlock_put_irqrestore(&nklock, s); + if (err) + xnfree(binding); + return err; } EXPORT_SYMBOL(rtdm_event_select_bind); @@ -1370,6 +1373,9 @@ int rtdm_sem_select_bind(rtdm_sem_t *sem, rtdm_selector_t *selector, type, fd_index, (sem->value > 0)); xnlock_put_irqrestore(&nklock, s); + if (err) + xnfree(binding); + return err; } EXPORT_SYMBOL(rtdm_sem_select_bind); _______________________________________________ Xenomai-git mailing list Xenomai-git@gna.org https://mail.gna.org/listinfo/xenomai-git