svn commit: r209108 - stable/7/sys/net
Bjoern A. Zeeb
bz at FreeBSD.org
Sat Jun 12 15:42:54 UTC 2010
Author: bz
Date: Sat Jun 12 15:42:54 2010
New Revision: 209108
URL: http://svn.freebsd.org/changeset/base/209108
Log:
"MFC" (parts of) r185849:
Fix a locking issue triggering an assertion in rt_setgate()
via arp_rtrequest() due to no radix node head (rnh) lock held
in case of a route change.
The previous MFC in r189026 left out this hunk.
Reported by: Haven Hash (haven.hash isilon.com)
Tested by: Haven Hash (haven.hash isilon.com)
PR: kern/147767
Modified:
stable/7/sys/net/rtsock.c
Modified: stable/7/sys/net/rtsock.c
==============================================================================
--- stable/7/sys/net/rtsock.c Sat Jun 12 15:13:36 2010 (r209107)
+++ stable/7/sys/net/rtsock.c Sat Jun 12 15:42:54 2010 (r209108)
@@ -672,8 +672,13 @@ route_output(struct mbuf *m, struct sock
rt_setmetrics(rtm->rtm_inits, &rtm->rtm_rmx,
&rt->rt_rmx);
rtm->rtm_index = rt->rt_ifp->if_index;
- if (rt->rt_ifa && rt->rt_ifa->ifa_rtrequest)
- rt->rt_ifa->ifa_rtrequest(RTM_ADD, rt, &info);
+ if (rt->rt_ifa && rt->rt_ifa->ifa_rtrequest) {
+ RT_UNLOCK(rt);
+ RADIX_NODE_HEAD_LOCK(rnh);
+ RT_LOCK(rt);
+ rt->rt_ifa->ifa_rtrequest(RTM_ADD, rt, &info);
+ RADIX_NODE_HEAD_UNLOCK(rnh);
+ }
if (info.rti_info[RTAX_GENMASK])
rt->rt_genmask = info.rti_info[RTAX_GENMASK];
/* FALLTHROUGH */
More information about the svn-src-stable-7
mailing list