summaryrefslogtreecommitdiffstats
path: root/sys/dev/pci/drm/drm_linux.c
diff options
context:
space:
mode:
authorkettenis <kettenis@openbsd.org>2020-03-06 07:50:01 +0000
committerkettenis <kettenis@openbsd.org>2020-03-06 07:50:01 +0000
commit3a537052a9bce97775a0ee1e4d014ef960849b99 (patch)
tree6869a8afd9e50d9f275f182c22f1b82fb2f1db2b /sys/dev/pci/drm/drm_linux.c
parentlcd(4/hppa): timeout_add(9) -> timeout_add_usec(9) (diff)
downloadwireguard-openbsd-3a537052a9bce97775a0ee1e4d014ef960849b99.tar.xz
wireguard-openbsd-3a537052a9bce97775a0ee1e4d014ef960849b99.zip
Release mutex before calling sleep_setup_signal() since this may stop
the process. ok bluhm@, jsg@
Diffstat (limited to 'sys/dev/pci/drm/drm_linux.c')
-rw-r--r--sys/dev/pci/drm/drm_linux.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/dev/pci/drm/drm_linux.c b/sys/dev/pci/drm/drm_linux.c
index 851d90d5af6..5ed38d23037 100644
--- a/sys/dev/pci/drm/drm_linux.c
+++ b/sys/dev/pci/drm/drm_linux.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: drm_linux.c,v 1.56 2020/01/16 16:35:03 mpi Exp $ */
+/* $OpenBSD: drm_linux.c,v 1.57 2020/03/06 07:50:01 kettenis Exp $ */
/*
* Copyright (c) 2013 Jonathan Gray <jsg@openbsd.org>
* Copyright (c) 2015, 2016 Mark Kettenis <kettenis@openbsd.org>
@@ -91,7 +91,6 @@ schedule_timeout(long timeout)
sleep_setup(&sls, sch_ident, sch_priority, "schto");
if (timeout != MAX_SCHEDULE_TIMEOUT)
sleep_setup_timeout(&sls, timeout);
- sleep_setup_signal(&sls);
wait = (sch_proc == curproc && timeout > 0);
@@ -99,6 +98,8 @@ schedule_timeout(long timeout)
MUTEX_OLDIPL(&sch_mtx) = splsched();
mtx_leave(&sch_mtx);
+ sleep_setup_signal(&sls);
+
if (timeout != MAX_SCHEDULE_TIMEOUT)
deadline = ticks + timeout;
sleep_finish_all(&sls, wait);