Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 3 Feb 2013 19:37:30 -0500
From:      Mark Johnston <markj@freebsd.org>
To:        Andriy Gapon <avg@FreeBSD.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r246245 - head/sys/netgraph
Message-ID:  <20130204003701.GA1700@oddish>
In-Reply-To: <201302021154.r12Bs0tp030831@svn.freebsd.org>
References:  <201302021154.r12Bs0tp030831@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Feb 02, 2013 at 11:54:00AM +0000, Andriy Gapon wrote:
> Author: avg
> Date: Sat Feb  2 11:54:00 2013
> New Revision: 246245
> URL: http://svnweb.freebsd.org/changeset/base/246245
> 
> Log:
>   ng_ether: track interface renaming
>   
>   Also sanitize interface names that can potentially contain characters
>   that are prohibited in netgraph names.
>   
>   PR:		kern/154850 (sanitizing of names)
>   Discussed with:	eri, melifaro
>   Submitted by:	Nikolay Denev <ndenev@gmail.com> (sanitizing code)
>   Reviewed by:	eri, glebius
>   MFC after:	17 days
> 
> Modified:
>   head/sys/netgraph/ng_ether.c
> 

Hi Andriy,

This commit seems to cause a panic during boot when creating the
loopback interface. I couldn't get a core dump but the problem seems to
happen when dereferencing ifp->if_l2com in the IFP2NG macro in
ng_ether_ifnet_arrival_event(). In the case of lo(4) this pointer seems
to be NULL (I suppose because lo(4) doesn't register itself in the
if_com_alloc/free tables).

The patch below fixes the panic for me.

Thanks,
-Mark

diff --git a/sys/netgraph/ng_ether.c b/sys/netgraph/ng_ether.c
index 6266f40..f566346 100644
--- a/sys/netgraph/ng_ether.c
+++ b/sys/netgraph/ng_ether.c
@@ -410,7 +410,12 @@ static void
 ng_ether_ifnet_arrival_event(void *arg __unused, struct ifnet *ifp)
 {
 	char name[IFNAMSIZ];
-	node_p node = IFP2NG(ifp);
+	node_p node;
+
+	if (ifp->if_l2com == NULL)
+		return;
+
+	node = IFP2NG(ifp);
 
 	/*
 	 * Just return if it's a new interface without an ng_ether companion.



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