View | Details | Raw Unified | Return to bug 210884 | Differences between
and this patch

Collapse All | Expand All

(-)kern_timeout.c (-7 / +10 lines)
Lines 1371-1376 again: Link Here
1371
		}
1371
		}
1372
		KASSERT(!sq_locked, ("sleepqueue chain still locked"));
1372
		KASSERT(!sq_locked, ("sleepqueue chain still locked"));
1373
		cancelled = ((flags & CS_EXECUTING) != 0);
1373
		cancelled = ((flags & CS_EXECUTING) != 0);
1374
	} else if ((c->c_iflags & CALLOUT_PENDING) == 0) {
1375
		/*
1376
		 * Callout isn't executing and wasn't scheduled at all.
1377
		 */
1378
		CTR3(KTR_CALLOUT, "failed to stop %p func %p arg %p",
1379
		    c, c->c_func, c->c_arg);
1380
		CC_UNLOCK(cc);
1381
		if (sq_locked)
1382
			sleepq_release(&cc_exec_waiting(cc, direct));
1383
		return (0);
1374
	} else
1384
	} else
1375
		cancelled = 1;
1385
		cancelled = 1;
1376
1386
Lines 1377-1389 again: Link Here
1377
	if (sq_locked)
1387
	if (sq_locked)
1378
		sleepq_release(&cc_exec_waiting(cc, direct));
1388
		sleepq_release(&cc_exec_waiting(cc, direct));
1379
1389
1380
	if ((c->c_iflags & CALLOUT_PENDING) == 0) {
1381
		CTR3(KTR_CALLOUT, "failed to stop %p func %p arg %p",
1382
		    c, c->c_func, c->c_arg);
1383
		CC_UNLOCK(cc);
1384
		return (cancelled);
1385
	}
1386
1387
	c->c_iflags &= ~CALLOUT_PENDING;
1390
	c->c_iflags &= ~CALLOUT_PENDING;
1388
	c->c_flags &= ~CALLOUT_ACTIVE;
1391
	c->c_flags &= ~CALLOUT_ACTIVE;
1389
1392

Return to bug 210884