From nobody@FreeBSD.org  Thu Jun 10 16:55:42 2010
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 1A6B7106566B
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 10 Jun 2010 16:55:42 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21])
	by mx1.freebsd.org (Postfix) with ESMTP id 0933F8FC18
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 10 Jun 2010 16:55:42 +0000 (UTC)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.14.3/8.14.3) with ESMTP id o5AGtfvH026203
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 10 Jun 2010 16:55:41 GMT
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.14.3/8.14.3/Submit) id o5AGtfsq026200;
	Thu, 10 Jun 2010 16:55:41 GMT
	(envelope-from nobody)
Message-Id: <201006101655.o5AGtfsq026200@www.freebsd.org>
Date: Thu, 10 Jun 2010 16:55:41 GMT
From: Haven Hash <haven.hash@isilon.com>
To: freebsd-gnats-submit@FreeBSD.org
Subject: route -n change operation with INVARIANTS kernel causes mutex radix node head not owned ASSERTION failure
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         147767
>Category:       kern
>Synopsis:       route -n change operation with INVARIANTS kernel causes mutex radix node head not owned ASSERTION failure
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    bz
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Jun 10 17:00:13 UTC 2010
>Closed-Date:    Sat Jun 12 15:52:58 UTC 2010
>Last-Modified:  Sat Jun 12 15:52:58 UTC 2010
>Originator:     Haven Hash
>Release:        7.3 Release
>Organization:
Isilon
>Environment:
FreeBSD  7.3-RELEASE FreeBSD 7.3-RELEASE #1: Thu Jun 10 01:24:18 UTC 2010     root@:/usr/obj/usr/src/sys/GENERIC  i386
>Description:
When running certain route operations via the userspace route utility on kernels built with the following options:

INVARIANTS
INVARIANT_SUPPORT

a lock assertion causes a kernel panic, the panic requires these options because the assertion is only checked when INVARIANT support is enabled, however it seems likely that other consistency problems could occur on non-INVARIANT kernels. 


>How-To-Repeat:
Compile and install a kernel with the following two lines included in the kernel configuration file:

option INVARIANTS
option INVARIANT_SUPPORT

If your machine does not have multiple external interfaces then you can create multiple vlan interfaces to substitute in for the following examples.

Add an IP address to an external interface (i.e. ifconfig em0 1.1.1.1 netmask 255.255.0.0).

Add another IP address in the same subnet to another external interface (i.e. ifconfig em1 1.1.1.2 netmask 255.255.0.0)

Attempt to use the route command to move the subnet route associated with the previously assigned IP addresses to go out the other interface (i.e. route -n change 1.1.0.0 -netmask 255.255.0.0 -ifp em1)

With INVARIANTS enabled a RNH (radix node head) lock assertion is hit. 

A partial stack from one machine is as follows:

panic @ time 1276188167.945, thread 0x907f8000: mutex radix node head not owned 
Panic occurred in module kernel loaded at 0x80200000:

Stack: --------------------------------------------------
kernel:_mtx_assert+0x72
kernel:rt_setgate+0xb9
kernel:arp_rtrequest+0x91
kernel:route_output+0x8d7
kernel:raw_usend+0x63
kernel:rts_send+0x27
kernel:sosend_generic+0x4f7
kernel:sosend+0x2e



>Fix:
It looks like rev: 189026 (a collection of merged revisions) added this assert and from the stack it looks like the calling of rt_setgate() from arp_rtrequest() does not take the necessary RNH lock being checked for. This code path is not the same in 8.x (nor have I been able to reproduce the issue on 8.x) as the arp code has been restructured in that line.

Attached patch which works for me, basically looks up the appropriate RNH from the global rt_tables and other available local variables, locks it before calling rt_setgate and unlocks it afterwards. Modified from similar code in route_output which does take this lock before calling rt_setgate().

Patch attached with submission follows:

Index: sys/netinet/if_ether.c
===================================================================
--- sys/netinet/if_ether.c	(revision 206544)
+++ sys/netinet/if_ether.c	(working copy)
@@ -154,6 +154,7 @@
 	static struct sockaddr_dl null_sdl = {sizeof(null_sdl), AF_LINK};
 	struct in_ifaddr *ia;
 	struct ifaddr *ifa;
+	struct radix_node_head *rnh;
 
 	RT_LOCK_ASSERT(rt);
 
@@ -177,8 +178,15 @@
 			/*
 			 * Case 1: This route should come from a route to iface.
 			 */
+			rnh = rt_tables[rt->rt_fibnum][info->rti_info[RTAX_DST]->sa_family];
+			if (rnh == NULL)
+			       break;	
+			RT_UNLOCK(rt);
+			RADIX_NODE_HEAD_LOCK(rnh);
+			RT_LOCK(rt);
 			rt_setgate(rt, rt_key(rt),
 					(struct sockaddr *)&null_sdl);
+			RADIX_NODE_HEAD_UNLOCK(rnh);
 			gate = rt->rt_gateway;
 			SDL(gate)->sdl_type = rt->rt_ifp->if_type;
 			SDL(gate)->sdl_index = rt->rt_ifp->if_index;


>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->	 feedback 
State-Changed-By: bz 
State-Changed-When: Fri Jun 11 08:51:23 UTC 2010 
State-Changed-Why:  
Looked at that, will send a follow-up shortly. 


Responsible-Changed-From-To: freebsd-bugs->bz 
Responsible-Changed-By: bz 
Responsible-Changed-When: Fri Jun 11 08:51:23 UTC 2010 
Responsible-Changed-Why:  
Colin asked me to have a look. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=147767 

From: "Bjoern A. Zeeb" <bz@FreeBSD.org>
To: bug-followup@FreeBSD.org, haven.hash@isilon.com
Cc:  
Subject: Re: kern/147767: route -n change operation with INVARIANTS kernel
 causes mutex radix node head not owned ASSERTION failure
Date: Fri, 11 Jun 2010 09:16:26 +0000 (UTC)

 Hi,
 
 I think the patch isn't good as for all but one code path it might
 re-aquire the rnh lock (lock recursion).
 
 It seems the original change in HEAD was:
 http://svn.freebsd.org/viewvc/base?view=revision&revision=185849
 
 Looking further all but the following part of that change had been merged
 in r189026.  Can you try this and report back if it fixes the situation
 for you as well?
 
 (pasted in, untested, so you may need to manually do it yourself
 and revert your original change)
 
 Index: sys/net/rtsock.c
 ===================================================================
 --- sys/net/rtsock.c    (revision 209036)
 +++ sys/net/rtsock.c    (working copy)
 @@ -672,8 +672,13 @@ route_output(struct mbuf *m, struct socket *so)
                          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 */
 

From: "Haven Hash" <haven.hash@isilon.com>
To: "Bjoern A. Zeeb" <bz@FreeBSD.org>,
	<bug-followup@FreeBSD.org>
Cc:  
Subject: RE: kern/147767: route -n change operation with INVARIANTS kernel causes mutex radix node head not owned ASSERTION failure
Date: Fri, 11 Jun 2010 15:26:17 -0700

 This is a multi-part message in MIME format.
 
 ------_=_NextPart_001_01CB09B5.730998E6
 Content-Type: text/plain;
 	charset="iso-8859-1"
 Content-Transfer-Encoding: quoted-printable
 
 
 Wanted to reply and agree that the second patch is better and confirm =
 that it works in my testing.
 
 Thank you very much,
 
 -Original Message-
 From: Bjoern A. Zeeb [mailto:bz@FreeBSD.org]
 Sent: Fri 6/11/2010 2:16 AM
 To: bug-followup@FreeBSD.org Haven Hash
 Subject: Re: kern/147767: route -n change operation with INVARIANTS =
 kernel causes mutex radix node head not owned ASSERTION failure
 =20
 Hi,
 
 I think the patch isnt good as for all but one code path it might
 re-aquire the rnh lock (lock recursion).
 
 It seems the original change in HEAD was:
 http://svn.freebsd.org/viewvc/base?view=3Drevision&revision=3D185849
 
 Looking further all but the following part of that change had been =
 merged
 in r189026.  Can you try this and report back if it fixes the situation
 for you as well?
 
 (pasted in, untested, so you may need to manually do it yourself
 and revert your original change)
 
 Index: sys/net/rtsock.c
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
 - sys/net/rtsock.c    (revision 209036)
 +++ sys/net/rtsock.c    (working copy)
 @@ -672,8 +672,13 @@ route_output(struct mbuf *m, struct socket *so)
                          rt_setmetrics(rtm->rtm_inits, &rtm->rtm_rmx,
                                          &rt->rt_rmx)
                          rtm->rtm_index =3D 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 =3D =
 info.rti_info[RTAX_GENMASK]
                          /* FALLTHROUGH */
 
 
 ------_=_NextPart_001_01CB09B5.730998E6
 Content-Type: text/html;
 	charset="iso-8859-1"
 Content-Transfer-Encoding: quoted-printable
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
 <HTML>
 <HEAD>
 <META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
 charset=3Diso-8859-1">
 <META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version =
 6.5.7651.59">
 <TITLE>RE: kern/147767: route -n change operation with INVARIANTS kernel =
 causes mutex radix node head not owned ASSERTION failure</TITLE>
 </HEAD>
 <BODY>
 <!-- Converted from text/plain format -->
 <BR>
 
 <P><FONT SIZE=3D2>Wanted to reply and agree that the second patch is =
 better and confirm that it works in my testing.<BR>
 <BR>
 Thank you very much,<BR>
 <BR>
 -Original Message-<BR>
 From: Bjoern A. Zeeb [<A =
 HREF=3D"mailto:bz@FreeBSD.org">mailto:bz@FreeBSD.org</A>]<BR>
 Sent: Fri 6/11/2010 2:16 AM<BR>
 To: bug-followup@FreeBSD.org Haven Hash<BR>
 Subject: Re: kern/147767: route -n change operation with INVARIANTS =
 kernel causes mutex radix node head not owned ASSERTION failure<BR>
 <BR>
 Hi,<BR>
 <BR>
 I think the patch isnt good as for all but one code path it might<BR>
 re-aquire the rnh lock (lock recursion).<BR>
 <BR>
 It seems the original change in HEAD was:<BR>
 <A =
 HREF=3D"http://svn.freebsd.org/viewvc/base?view=3Drevision&revision=3D185=
 849">http://svn.freebsd.org/viewvc/base?view=3Drevision&revision=3D185849=
 </A><BR>
 <BR>
 Looking further all but the following part of that change had been =
 merged<BR>
 in r189026.&nbsp; Can you try this and report back if it fixes the =
 situation<BR>
 for you as well?<BR>
 <BR>
 (pasted in, untested, so you may need to manually do it yourself<BR>
 and revert your original change)<BR>
 <BR>
 Index: sys/net/rtsock.c<BR>
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<BR>
 - sys/net/rtsock.c&nbsp;&nbsp;&nbsp; (revision 209036)<BR>
 +++ sys/net/rtsock.c&nbsp;&nbsp;&nbsp; (working copy)<BR>
 @@ -672,8 +672,13 @@ route_output(struct mbuf *m, struct socket *so)<BR>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
 nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
 rt_setmetrics(rtm-&gt;rtm_inits, &amp;rtm-&gt;rtm_rmx,<BR>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
 nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
 bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
 sp;&nbsp;&nbsp;&nbsp; &amp;rt-&gt;rt_rmx)<BR>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
 nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
 rtm-&gt;rtm_index =3D rt-&gt;rt_ifp-&gt;if_index<BR>
 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if =
 (rt-&gt;rt_ifa &amp;&amp; rt-&gt;rt_ifa-&gt;ifa_rtrequest)<BR>
 -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
 nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rt-&gt;rt_ifa-&gt;ifa_rtrequest(RTM_ADD, =
 rt, &amp;info)<BR>
 +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if =
 (rt-&gt;rt_ifa &amp;&amp; rt-&gt;rt_ifa-&gt;ifa_rtrequest) {<BR>
 +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
 nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RT_UNLOCK(rt)<BR>
 +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
 nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RADIX_NODE_HEAD_LOCK(rnh)<BR>
 +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
 nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RT_LOCK(rt)<BR>
 +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
 nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
 rt-&gt;rt_ifa-&gt;ifa_rtrequest(RTM_ADD, rt, &amp;info)<BR>
 +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
 nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RADIX_NODE_HEAD_UNLOCK(rnh)<BR>
 +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
 nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
 if (info.rti_info[RTAX_GENMASK])<BR>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
 nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
 bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rt-&gt;rt_genmask =3D =
 info.rti_info[RTAX_GENMASK]<BR>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
 nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
 /* FALLTHROUGH */<BR>
 <BR>
 </FONT>
 </P>
 
 </BODY>
 </HTML>
 ------_=_NextPart_001_01CB09B5.730998E6--

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/147767: commit references a PR
Date: Sat, 12 Jun 2010 15:43:08 +0000 (UTC)

 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 */
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: feedback->closed 
State-Changed-By: bz 
State-Changed-When: Sat Jun 12 15:51:30 UTC 2010 
State-Changed-Why:  
The patch has been comitted to stable/7. 
Thanks a lot for reporting and testing. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=147767 
>Unformatted:
