fix data race in timer_create with SIGEV_THREAD notification
authorRich Felker <dalias@aerifal.cx>
Thu, 26 Sep 2019 01:49:53 +0000 (21:49 -0400)
committerRich Felker <dalias@aerifal.cx>
Thu, 26 Sep 2019 01:49:53 +0000 (21:49 -0400)
commit29bad49d72e5aeedb97d2bb2af44838d934026a0
tree320a06fd7a4318149b3b0dd779b6e299868fe7a1
parent7d5c5706a0e1d2f4019a92e1a869d71d552bbb49
fix data race in timer_create with SIGEV_THREAD notification

in the timer thread start function, self->timer_id was accessed
without synchronization; the timer thread could fail to see the store
from the calling thread, resulting in timer_delete failing to delete
the correct kernel-level timer.

this fix is based on a patch by changdiankang, but with the load moved
to after receiving the timer_delete signal rather than just after the
start barrier, so as not to retain the possibility of data race with
timer_delete.
src/time/timer_create.c