summaryrefslogtreecommitdiff
path: root/term/users.c
diff options
context:
space:
mode:
Diffstat (limited to 'term/users.c')
-rw-r--r--term/users.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/term/users.c b/term/users.c
index b01efb35..43646e3c 100644
--- a/term/users.c
+++ b/term/users.c
@@ -1743,7 +1743,11 @@ call_asyncs ()
return;
if ((termflags & ICKY_ASYNC) && !(termflags & NO_OWNER))
- hurd_sig_post (foreground_id, SIGIO, async_icky_id);
+ {
+ mutex_unlock (&global_lock);
+ hurd_sig_post (foreground_id, SIGIO, async_icky_id);
+ mutex_lock (&global_lock);
+ }
for (ar = async_requests, prevp = &async_requests;
ar;
@@ -1774,7 +1778,9 @@ send_signal (int signo)
right = ports_get_right (cttyid);
mach_port_insert_right (mach_task_self (), right, right,
MACH_MSG_TYPE_MAKE_SEND);
+ mutex_unlock (&global_lock);
hurd_sig_post (foreground_id, signo, right);
+ mutex_lock (&global_lock);
mach_port_deallocate (mach_task_self (), right);
}
}