]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fix RPC breakage when longjumping from signal handler
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Wed, 25 Nov 2015 00:09:13 +0000 (01:09 +0100)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Wed, 25 Nov 2015 00:09:13 +0000 (01:09 +0100)
* hurd/sigunwind.c (_hurdsig_longjmp_from_handler): Destroy reply port
of interrupted RPC instead of restoring it.

ChangeLog
hurd/sigunwind.c

index 343a936105002b13458ba654016a890c4d69d0c0..33ea5ab374bd20b4ddfc127920abcb17d0df6aef 100644 (file)
--- 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.
index 3a62fb5fb9486b826d277accfe180a18c6db2f16..800bb306f50321438cd84aa8cc5b167665945b49 100644 (file)
@@ -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);