aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2015-11-25 01:09:13 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2015-11-25 01:09:13 +0100
commitfb304035c41c7ee2afede51e5e8568974549ba5e (patch)
tree88e86f66dde7ea65269460bfeed94891c2c8acaa
parente02cabecf0d025ec4f4ddee290bdf7aadb873bb3 (diff)
downloadglibc-fb304035c41c7ee2afede51e5e8568974549ba5e.zip
glibc-fb304035c41c7ee2afede51e5e8568974549ba5e.tar.gz
glibc-fb304035c41c7ee2afede51e5e8568974549ba5e.tar.bz2
Fix RPC breakage when longjumping from signal handler
* hurd/sigunwind.c (_hurdsig_longjmp_from_handler): Destroy reply port of interrupted RPC instead of restoring it.
-rw-r--r--ChangeLog5
-rw-r--r--hurd/sigunwind.c3
2 files changed, 7 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 343a936..33ea5ab 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2015-11-25 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * hurd/sigunwind.c (_hurdsig_longjmp_from_handler): Destroy reply port
+ of interrupted RPC instead of restoring it.
+
2015-11-24 Joseph Myers <joseph@codesourcery.com>
* stdlib/strtod_nan.c: New file.
diff --git a/hurd/sigunwind.c b/hurd/sigunwind.c
index 3a62fb5..800bb30 100644
--- a/hurd/sigunwind.c
+++ b/hurd/sigunwind.c
@@ -50,7 +50,8 @@ _hurdsig_longjmp_from_handler (void *data, jmp_buf env, int val)
*reply_port = MACH_PORT_DEAD;
__mach_port_destroy (__mach_task_self (), port);
}
- *reply_port = scp->sc_reply_port;
+ if (scp->sc_reply_port)
+ __mach_port_destroy (__mach_task_self (), scp->sc_reply_port);
}
__spin_lock (&ss->lock);