]> sourceware.org Git - glibc.git/commitdiff
mach: Fix bogus negative return
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Sun, 25 Aug 2024 01:35:29 +0000 (03:35 +0200)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Sun, 25 Aug 2024 01:35:29 +0000 (03:35 +0200)
One can be very unlucky to call time_now first just before a second switch,
and mach_msg sleep just a bit more enough for the second time_now call to
count one second too many (or even more if scheduling is really unlucky).

So we have to protect against returning a bogus negative value in such case.

sysdeps/mach/sleep.c

index 572be150bc4e805215c567777056cfda18c08396..aa750c13c5a6f266dd1ddf905414fd8f24af42a5 100644 (file)
@@ -43,6 +43,9 @@ __sleep (unsigned int seconds)
   after = time_now ();
   __mach_port_destroy (__mach_task_self (), recv);
 
+  if (after - before > seconds)
+    return 0;
+
   return seconds - (after - before);
 }
 weak_alias (__sleep, sleep)
This page took 0.037343 seconds and 5 git commands to generate.