diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2015-11-25 01:09:13 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2015-11-25 01:09:13 +0100 |
commit | fb304035c41c7ee2afede51e5e8568974549ba5e (patch) | |
tree | 88e86f66dde7ea65269460bfeed94891c2c8acaa | |
parent | e02cabecf0d025ec4f4ddee290bdf7aadb873bb3 (diff) | |
download | glibc-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-- | ChangeLog | 5 | ||||
-rw-r--r-- | hurd/sigunwind.c | 3 |
2 files changed, 7 insertions, 1 deletions
@@ -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); |