diff options
author | archie <archie@FreeBSD.org> | 2000-01-04 22:06:08 +0000 |
---|---|---|
committer | archie <archie@FreeBSD.org> | 2000-01-04 22:06:08 +0000 |
commit | 4f702e355c9a539bf4c04e5f1f2a333c2bc4fe25 (patch) | |
tree | 7965b00d37a02cd8444aacb761f3a5a20d1d76b2 /sys/netgraph | |
parent | 8768919ebd5aa0ae0960cf2435dc361f00013753 (diff) | |
download | FreeBSD-src-4f702e355c9a539bf4c04e5f1f2a333c2bc4fe25.zip FreeBSD-src-4f702e355c9a539bf4c04e5f1f2a333c2bc4fe25.tar.gz |
Fix race condition caused by missing splnet()'s.
Diffstat (limited to 'sys/netgraph')
-rw-r--r-- | sys/netgraph/ng_pptpgre.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/netgraph/ng_pptpgre.c b/sys/netgraph/ng_pptpgre.c index dde14bb..3b4c6ae 100644 --- a/sys/netgraph/ng_pptpgre.c +++ b/sys/netgraph/ng_pptpgre.c @@ -658,6 +658,7 @@ ng_pptpgre_start_recv_ack_timer(node_p node) static void ng_pptpgre_recv_ack_timeout(void *arg) { + int s = splnet(); const node_p node = arg; const priv_p priv = node->private; struct ng_pptpgre_ackp *const a = &priv->ackp; @@ -676,6 +677,7 @@ ng_pptpgre_recv_ack_timeout(void *arg) /* Restart timer if there are any more outstanding frames */ if (priv->recvAck != priv->xmitSeq) ng_pptpgre_start_recv_ack_timer(node); + splx(s); } /* @@ -687,6 +689,7 @@ ng_pptpgre_recv_ack_timeout(void *arg) static void ng_pptpgre_send_ack_timeout(void *arg) { + int s = splnet(); const node_p node = arg; const priv_p priv = node->private; struct ng_pptpgre_ackp *const a = &priv->ackp; @@ -694,6 +697,7 @@ ng_pptpgre_send_ack_timeout(void *arg) /* Send a frame with an ack but no payload */ a->sackTimerRunning = 0; ng_pptpgre_xmit(node, NULL, NULL); + splx(s); } /************************************************************************* |