Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 22 Apr 2012 16:13:23 +0000 (UTC)
From:      "Alexander V. Chernikov" <melifaro@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r234572 - head/sys/net
Message-ID:  <201204221613.q3MGDNcj047130@svn.freebsd.org>

index | next in thread | raw e-mail

Author: melifaro
Date: Sun Apr 22 16:13:23 2012
New Revision: 234572
URL: http://svn.freebsd.org/changeset/base/234572

Log:
  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 <ptyll@nitronet.pl>
  Approved by:        kib(mentor)
  
  MFC after:          1 week

Modified:
  head/sys/net/rtsock.c

Modified: head/sys/net/rtsock.c
==============================================================================
--- head/sys/net/rtsock.c	Sun Apr 22 09:19:19 2012	(r234571)
+++ head/sys/net/rtsock.c	Sun Apr 22 16:13:23 2012	(r234572)
@@ -1884,10 +1884,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;
 		}


help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201204221613.q3MGDNcj047130>