From cce3632b9ae21696c153d7cadced6db1c766e3a8 Mon Sep 17 00:00:00 2001 From: melifaro Date: Sat, 5 May 2012 11:34:27 +0000 Subject: [PATCH] MFC r234572 Do not require radix write lock to be held while dumping route table via sysctl(4) interface. This permits router not to stop forwarding packets while route table is being written to user-supplied buffer. Reported by: Pawel Tyll Approved by: kib(mentor) git-svn-id: svn://svn.freebsd.org/base/stable/8@235056 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- sys/net/rtsock.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/net/rtsock.c b/sys/net/rtsock.c index 7feb21074..e51cc062e 100644 --- a/sys/net/rtsock.c +++ b/sys/net/rtsock.c @@ -1857,10 +1857,10 @@ sysctl_rtsock(SYSCTL_HANDLER_ARGS) for (error = 0; error == 0 && i <= lim; i++) { rnh = rt_tables_get_rnh(req->td->td_proc->p_fibnum, i); if (rnh != NULL) { - RADIX_NODE_HEAD_LOCK(rnh); + RADIX_NODE_HEAD_RLOCK(rnh); error = rnh->rnh_walktree(rnh, sysctl_dumpentry, &w); - RADIX_NODE_HEAD_UNLOCK(rnh); + RADIX_NODE_HEAD_RUNLOCK(rnh); } else if (af != 0) error = EAFNOSUPPORT; } -- 2.45.0