Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 14 Aug 2012 12:44:26 +0400
From:      "Andrey V. Elsukov" <ae@FreeBSD.org>
To:        John Baldwin <jhb@freebsd.org>
Cc:        freebsd-net@freebsd.org
Subject:   Re: kern/168742: detaching of ethernet adapter with configured vlans leads to panic
Message-ID:  <502A0FEA.1020808@FreeBSD.org>
In-Reply-To: <201208070805.43687.jhb@freebsd.org>
References:  <201208070448.q774mVNm080900@freefall.freebsd.org> <201208070805.43687.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 07.08.2012 16:05, John Baldwin wrote:
> I think the problem is the assertion is wrong.  We could add a new DETACHING
> flag, but I think the simplest fix is to just remove it.  I'm not sure if a 
> similar assertion in if_delmulti_ifma() should also be removed.

Hi, John.

This fixes the problem, thanks.

> Index: if.c
> ===================================================================
> --- if.c	(revision 238992)
> +++ if.c	(working copy)
> @@ -3058,19 +3058,7 @@ if_delmulti(struct ifnet *ifp, struct sockaddr *sa
>  {
>  	struct ifmultiaddr *ifma;
>  	int lastref;
> -#ifdef INVARIANTS
> -	struct ifnet *oifp;
>  
> -	IFNET_RLOCK_NOSLEEP();
> -	TAILQ_FOREACH(oifp, &V_ifnet, if_link)
> -		if (ifp == oifp)
> -			break;
> -	if (ifp != oifp)
> -		ifp = NULL;
> -	IFNET_RUNLOCK_NOSLEEP();
> -
> -	KASSERT(ifp != NULL, ("%s: ifnet went away", __func__));
> -#endif
>  	if (ifp == NULL)
>  		return (ENOENT);
>  
> 


-- 
WBR, Andrey V. Elsukov





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