about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2015-02-07 22:16:19 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2015-02-07 22:16:19 +0100
commite9a5bc1c18b5acf3c8475e3f36431ac34bda9751 (patch)
treef04de3ec1a82064b532e04ca15ffb3ae5c1d192a
parenta9a002fb6cb9941ba283ef832e2a88ab00033683 (diff)
downloadglibc-e9a5bc1c18b5acf3c8475e3f36431ac34bda9751.tar.gz
glibc-e9a5bc1c18b5acf3c8475e3f36431ac34bda9751.tar.xz
glibc-e9a5bc1c18b5acf3c8475e3f36431ac34bda9751.zip
hurd: fix sigstate locking
It looks like _hurd_thread_sigstate used to return with the sigstate
lock held long ago, but since that's no longer the case, don't unlock
something that isn't locked.

Note that it's unlikely this change fixes anything in practice since
its current implementation (on i386) makes this call a nop.
-rw-r--r--ChangeLog5
-rw-r--r--hurd/hurd/signal.h3
2 files changed, 6 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 5081237ce5..97849df706 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2015-02-07  Richard Braun  <rbraun@sceen.net>
+
+	* hurd/hurd/signal.h (_hurd_critical_section_lock): Don't unlock
+	sigstate.
+
 2015-02-07  Samuel Thibault  <samuel.thibault@ens-lyon.org>
 
 	* sysdeps/pthread/aio_misc.c [!AIO_PRIO_DELTA_MAX]: Do not check
diff --git a/hurd/hurd/signal.h b/hurd/hurd/signal.h
index 4a744c10ed..e332242291 100644
--- a/hurd/hurd/signal.h
+++ b/hurd/hurd/signal.h
@@ -175,9 +175,8 @@ _hurd_critical_section_lock (void)
       /* The thread variable is unset; this must be the first time we've
 	 asked for it.  In this case, the critical section flag cannot
 	 possible already be set.  Look up our sigstate structure the slow
-	 way; this locks the sigstate lock.  */
+	 way.  */
       ss = *location = _hurd_thread_sigstate (__mach_thread_self ());
-      __spin_unlock (&ss->lock);
     }
 
   if (! __spin_try_lock (&ss->critical_section_lock))