Stop doing lockless `t_flags' check within task_add(9) and task_del(9).
authormvs <mvs@openbsd.org>
Mon, 15 Aug 2022 09:10:36 +0000 (09:10 +0000)
committermvs <mvs@openbsd.org>
Mon, 15 Aug 2022 09:10:36 +0000 (09:10 +0000)
This doesn't work on MP systems. We do locked `t_flags' check just after
lockless check, so just remove it.

ok dlg@

sys/kern/kern_task.c

index 1a5ed9c..2a2fa25 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: kern_task.c,v 1.31 2020/08/01 08:40:20 anton Exp $ */
+/*     $OpenBSD: kern_task.c,v 1.32 2022/08/15 09:10:36 mvs Exp $ */
 
 /*
  * Copyright (c) 2013 David Gwynne <dlg@openbsd.org>
@@ -354,9 +354,6 @@ task_add(struct taskq *tq, struct task *w)
 {
        int rv = 0;
 
-       if (ISSET(w->t_flags, TASK_ONQUEUE))
-               return (0);
-
        mtx_enter(&tq->tq_mtx);
        if (!ISSET(w->t_flags, TASK_ONQUEUE)) {
                rv = 1;
@@ -379,9 +376,6 @@ task_del(struct taskq *tq, struct task *w)
 {
        int rv = 0;
 
-       if (!ISSET(w->t_flags, TASK_ONQUEUE))
-               return (0);
-
        mtx_enter(&tq->tq_mtx);
        if (ISSET(w->t_flags, TASK_ONQUEUE)) {
                rv = 1;