diff options
| author | Gleb Smirnoff <glebius@FreeBSD.org> | 2004-11-04 21:30:18 +0000 |
|---|---|---|
| committer | Gleb Smirnoff <glebius@FreeBSD.org> | 2004-11-04 21:30:18 +0000 |
| commit | 3eadb26df86561cb05940d35ec8e3d452b1dc7a1 (patch) | |
| tree | 1890bfa1c01bfe6307a355b57d66e9ff3ca3ea78 | |
| parent | 6e91e74e1106000a0654c1a1de0c80a87f4a61da (diff) | |
Notes
| -rw-r--r-- | sys/netgraph/ng_base.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/netgraph/ng_base.c b/sys/netgraph/ng_base.c index c06e830fc1cb4..5c364800f5a92 100644 --- a/sys/netgraph/ng_base.c +++ b/sys/netgraph/ng_base.c @@ -3624,13 +3624,18 @@ ng_untimeout(struct callout *c, node_p node) { item_p item; int rval; + void *c_func; if (c == NULL) return (0); - rval = callout_drain(c); + /* there must be an official way to do this */ + mtx_lock_spin(&callout_lock); + c_func = c->c_func; + rval = callout_stop(c); + mtx_unlock_spin(&callout_lock); item = c->c_arg; /* Do an extra check */ - if ((c->c_func == &ng_timeout_trapoline) && + if ((rval > 0) && (c_func == &ng_timeout_trapoline) && (NGI_NODE(item) == node)) { /* * We successfully removed it from the queue before it ran |
