diff --git a/usr.bin/time/time.c b/usr.bin/time/time.c index 8e45f128331..f883db17a59 100644 --- a/usr.bin/time/time.c +++ b/usr.bin/time/time.c @@ -52,6 +52,8 @@ static char sccsid[] = "@(#)time.c 8.1 (Berkeley) 6/6/93"; #include #include #include +#include +#include #include #include #include @@ -137,7 +139,10 @@ main(int argc, char **argv) (void)signal(SIGINFO, siginfo); (void)siginterrupt(SIGINFO, 1); while (wait4(pid, &status, 0, &ru) != pid) { - if (siginfo_recvd) { + bool do_siginfo = siginfo_recvd != 0; + + atomic_signal_fence(memory_order_acquire); + if (do_siginfo) { siginfo_recvd = 0; if (clock_gettime(CLOCK_MONOTONIC, &after)) err(1, "clock_gettime"); @@ -308,4 +313,5 @@ siginfo(int sig __unused) { siginfo_recvd = 1; + atomic_signal_fence(memory_order_release); }