]> git.ipfire.org Git - thirdparty/glibc.git/commit
hurd: Fix pselect atomicity
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Wed, 27 May 2020 23:42:24 +0000 (23:42 +0000)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Thu, 28 May 2020 09:11:12 +0000 (09:11 +0000)
commitf9011787497a276f84ef79ae233992692a626dc7
tree680f878010797f43048084ad75a59d26628866b6
parent31563b68410ff8e9490c5aafca31ec71b38f87a5
hurd: Fix pselect atomicity

In case the signal arrives before the __mach_msg call, we need to catch
between the sigprocmask call and the __mach_msg call.  Let's just reuse
the support for sigsuspend to make the signal send a message that
our __mach_msg call will just receive.

* hurd/hurdselect.c (_hurd_select): Add sigport and ss variables. When
sigmask is not NULL, create a sigport port and register as
ss->suspended.  Add it to the portset.  When we receive a message on it,
set error to EINTR.  Clean up sigport and portset appropriately.

* hurd/hurdsig.c (wake_sigsuspend): Note that pselect also uses it.
hurd/hurdselect.c
hurd/hurdsig.c