diff --git a/sched/semaphore/sem_rw.c b/sched/semaphore/sem_rw.c index 8b1c7e1d249..e7fe4d9d678 100644 --- a/sched/semaphore/sem_rw.c +++ b/sched/semaphore/sem_rw.c @@ -171,18 +171,17 @@ void up_read(FAR rw_semaphore_t *rwsem) rwsem->holder = RWSEM_NO_HOLDER; up_wait(rwsem); } - - goto out; } - - DEBUGASSERT(rwsem->reader > 0); - - if (--rwsem->reader <= 0) + else { - up_wait(rwsem); + DEBUGASSERT(rwsem->reader > 0); + + if (--rwsem->reader <= 0) + { + up_wait(rwsem); + } } -out: nxmutex_unlock(&rwsem->protected); }