summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordlg <dlg@openbsd.org>2013-12-24 01:11:04 +0000
committerdlg <dlg@openbsd.org>2013-12-24 01:11:04 +0000
commit52fe8a0ecd04ae80559997b70fc1e63202eefabf (patch)
treef07b1dc0774b458bdf09b1f0624a2b34b4cb4648
parentrename local ticks to nticks to avoid aliasing global. ok krw (diff)
downloadwireguard-openbsd-52fe8a0ecd04ae80559997b70fc1e63202eefabf.tar.xz
wireguard-openbsd-52fe8a0ecd04ae80559997b70fc1e63202eefabf.zip
get rid of if (timeout_pending()) timeout_del(). this is racy. any
conditionals you did on timeout_pending can now be done on timeout_del now that it returns what it did. ok and a very good fix from kettenis@
-rw-r--r--sys/arch/loongson/dev/kb3310.c5
-rw-r--r--sys/arch/sparc/dev/be.c5
-rw-r--r--sys/kern/kern_synch.c5
3 files changed, 6 insertions, 9 deletions
diff --git a/sys/arch/loongson/dev/kb3310.c b/sys/arch/loongson/dev/kb3310.c
index 900a1e7ec14..d670090cf8a 100644
--- a/sys/arch/loongson/dev/kb3310.c
+++ b/sys/arch/loongson/dev/kb3310.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kb3310.c,v 1.18 2012/10/03 21:44:51 miod Exp $ */
+/* $OpenBSD: kb3310.c,v 1.19 2013/12/24 01:11:04 dlg Exp $ */
/*
* Copyright (c) 2010 Otto Moerbeek <otto@drijf.net>
*
@@ -520,8 +520,7 @@ ykbec_bell(void *arg, u_int pitch, u_int period, u_int volume, int poll)
s = spltty();
bctrl = ykbec_read(sc, REG_BEEP_CONTROL);
- if (volume == 0 || timeout_pending(&sc->sc_bell_tmo)) {
- timeout_del(&sc->sc_bell_tmo);
+ if (timeout_del(&sc->sc_bell_tmo) || volume == 0) {
/* inline ykbec_bell_stop(arg); */
ykbec_write(sc, REG_BEEP_CONTROL, bctrl & ~BEEP_ENABLE);
}
diff --git a/sys/arch/sparc/dev/be.c b/sys/arch/sparc/dev/be.c
index 7a28147cd6e..97b07758c60 100644
--- a/sys/arch/sparc/dev/be.c
+++ b/sys/arch/sparc/dev/be.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: be.c,v 1.45 2013/11/27 08:56:31 mpi Exp $ */
+/* $OpenBSD: be.c,v 1.46 2013/12/24 01:11:04 dlg Exp $ */
/*
* Copyright (c) 1998 Theo de Raadt and Jason L. Wright.
@@ -323,8 +323,7 @@ bestop(sc)
int tries;
sc->sc_arpcom.ac_if.if_timer = 0;
- if (timeout_pending(&sc->sc_tick))
- timeout_del(&sc->sc_tick);
+ timeout_del(&sc->sc_tick);
tries = 32;
sc->sc_br->tx_cfg = 0;
diff --git a/sys/kern/kern_synch.c b/sys/kern/kern_synch.c
index 84f0028289a..c480e46f80f 100644
--- a/sys/kern/kern_synch.c
+++ b/sys/kern/kern_synch.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kern_synch.c,v 1.111 2013/11/25 15:24:18 tedu Exp $ */
+/* $OpenBSD: kern_synch.c,v 1.112 2013/12/24 01:11:04 dlg Exp $ */
/* $NetBSD: kern_synch.c,v 1.37 1996/04/22 01:38:37 christos Exp $ */
/*
@@ -263,9 +263,8 @@ sleep_finish_timeout(struct sleep_state *sls)
if (p->p_flag & P_TIMEOUT) {
atomic_clearbits_int(&p->p_flag, P_TIMEOUT);
return (EWOULDBLOCK);
- } else if (timeout_pending(&p->p_sleep_to)) {
+ } else
timeout_del(&p->p_sleep_to);
- }
return (0);
}