diff options
author | Sergey Bugaev <bugaevc@gmail.com> | 2023-04-29 23:18:19 +0300 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-05-01 03:18:48 +0200 |
commit | 4e506f67cbe6cd935377da65909f0606014459aa (patch) | |
tree | aa701a83abdd2769c5ee3067cd048646af39ea22 /hurd/intr-msg.c | |
parent | eb14819c14d190830df673c9a3089d82d6b7b8f7 (diff) | |
download | glibc-4e506f67cbe6cd935377da65909f0606014459aa.tar.gz glibc-4e506f67cbe6cd935377da65909f0606014459aa.tar.xz glibc-4e506f67cbe6cd935377da65909f0606014459aa.zip |
hurd: Replace reply port with a dead name on failed interruption
If we're trying to interrupt an interruptible RPC, but the server fails to respond to our __interrupt_operation () call, we instead destroy the reply port we were expecting the reply to the RPC on. Instead of deallocating the name completely, replace it with a dead name, so the name won't get reused for some other right, and deallocate it in _hurd_intr_rpc_mach_msg once we return from the signal handler. Signed-off-by: Sergey Bugaev <bugaevc@gmail.com> Message-Id: <20230429201822.2605207-4-bugaevc@gmail.com>
Diffstat (limited to 'hurd/intr-msg.c')
-rw-r--r-- | hurd/intr-msg.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/hurd/intr-msg.c b/hurd/intr-msg.c index 1a086b5141..716d87ab6a 100644 --- a/hurd/intr-msg.c +++ b/hurd/intr-msg.c @@ -305,6 +305,7 @@ _hurd_intr_rpc_mach_msg (mach_msg_header_t *msg, { /* Make sure we have a valid reply port. The one we were using may have been destroyed by interruption. */ + __mig_dealloc_reply_port (rcv_name); m->header.msgh_local_port = rcv_name = __mig_get_reply_port (); m->header.msgh_bits = msgh_bits; option = user_option; |