hurd: handle EINTR during critical sections
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Tue, 23 Mar 2021 22:38:54 +0000 (22:38 +0000)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Tue, 23 Mar 2021 22:40:10 +0000 (22:40 +0000)
commitc3b287be74e12bdb15ed36e98d24fd42f8ee9122
tree82a9f85685a35bf5b12e480ee6ed1abc24103dc8
parenta4ea18ec6cc3f1370efab09bc18c1badbf74aa13
hurd: handle EINTR during critical sections

During critical sections, signal handling is deferred and thus RPCs return
EINTR, even if SA_RESTART is set. We thus have to restart the whole critical
section in that case.

This also adds HURD_CRITICAL_UNLOCK in the cases where one wants to
break the section in the middle.
29 files changed:
hurd/dtable.c
hurd/geteuids.c
hurd/hurd/signal.h
hurd/hurdexec.c
hurd/hurdfchdir.c
hurd/hurdsock.c
hurd/seteuids.c
sysdeps/mach/hurd/faccessat.c
sysdeps/mach/hurd/fork.c
sysdeps/mach/hurd/getegid.c
sysdeps/mach/hurd/geteuid.c
sysdeps/mach/hurd/getgid.c
sysdeps/mach/hurd/getgroups.c
sysdeps/mach/hurd/getresgid.c
sysdeps/mach/hurd/getresuid.c
sysdeps/mach/hurd/getuid.c
sysdeps/mach/hurd/group_member.c
sysdeps/mach/hurd/setegid.c
sysdeps/mach/hurd/seteuid.c
sysdeps/mach/hurd/setgid.c
sysdeps/mach/hurd/setgroups.c
sysdeps/mach/hurd/setitimer.c
sysdeps/mach/hurd/setregid.c
sysdeps/mach/hurd/setresgid.c
sysdeps/mach/hurd/setresuid.c
sysdeps/mach/hurd/setreuid.c
sysdeps/mach/hurd/setsid.c
sysdeps/mach/hurd/setuid.c
sysdeps/mach/hurd/spawni.c