summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_sleepqueue.c
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2016-03-15 10:45:55 +0000
committerkib <kib@FreeBSD.org>2016-03-15 10:45:55 +0000
commitf4004c8edabeea33669971e1dad93526501fe2b1 (patch)
tree9531b5c801b237a3d63a7de13cf79d56f1f23315 /sys/kern/subr_sleepqueue.c
parenta19d1c35309ce3c69abf6d78c6a07b0612c436b5 (diff)
downloadFreeBSD-src-f4004c8edabeea33669971e1dad93526501fe2b1.zip
FreeBSD-src-f4004c8edabeea33669971e1dad93526501fe2b1.tar.gz
MFC r296320:
Adjust _callout_stop_safe() return value for the subr_sleepqueue.c needs when migrating callout was blocked, but running one was not. PR: 200992
Diffstat (limited to 'sys/kern/subr_sleepqueue.c')
-rw-r--r--sys/kern/subr_sleepqueue.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/kern/subr_sleepqueue.c b/sys/kern/subr_sleepqueue.c
index d4ae25f..c490460 100644
--- a/sys/kern/subr_sleepqueue.c
+++ b/sys/kern/subr_sleepqueue.c
@@ -572,7 +572,8 @@ sleepq_check_timeout(void)
* another CPU, so synchronize with it to avoid having it
* accidentally wake up a subsequent sleep.
*/
- else if (callout_stop(&td->td_slpcallout) == 0) {
+ else if (_callout_stop_safe(&td->td_slpcallout, CS_MIGRBLOCK)
+ == 0) {
td->td_flags |= TDF_TIMEOUT;
TD_SET_SLEEPING(td);
mi_switch(SW_INVOL | SWT_SLEEPQTIMO, NULL);
OpenPOWER on IntegriCloud