Fix sem_post() behaviour to wake up multiple waiting threads.
diff --git a/libc/bionic/semaphore.c b/libc/bionic/semaphore.c
index f4eebce..84b9314 100644
--- a/libc/bionic/semaphore.c
+++ b/libc/bionic/semaphore.c
@@ -180,7 +180,7 @@
     if (sem == NULL)
         return EINVAL;
 
-    if (__atomic_inc((volatile int*)&sem->count) == 0)
+    if (__atomic_inc((volatile int*)&sem->count) >= 0)
         __futex_wake(&sem->count, 1);
 
     return 0;
diff --git a/libc/docs/CHANGES.TXT b/libc/docs/CHANGES.TXT
index 7c8f38c..f59cfab 100644
--- a/libc/docs/CHANGES.TXT
+++ b/libc/docs/CHANGES.TXT
@@ -55,6 +55,9 @@
 - fix sem_trywait() to return -1 and set errno to EAGAIN, instead of
   returning EAGAIN directly.
 
+- fix sem_post() to wake up multiple threads when called rapidly in
+  succession.
+
 -------------------------------------------------------------------------------
 Differences between Android 2.1 and 2.0.1: