svn commit: r251490 - head/sys/net

Mikolaj Golub trociny at FreeBSD.org
Fri Jun 7 10:46:35 UTC 2013


On Fri, Jun 07, 2013 at 02:33:08PM +0400, Gleb Smirnoff wrote:
> On Fri, Jun 07, 2013 at 10:27:51AM +0000, Mikolaj Golub wrote:
> M> Author: trociny
> M> Date: Fri Jun  7 10:27:50 2013
> M> New Revision: 251490
> M> URL: http://svnweb.freebsd.org/changeset/base/251490
> M> 
> M> Log:
> M>   Properly set curvnet context in lagg_port_setlladdr() task handler.
> M>   
> M>   Reported by:	Nikos Vassiliadis <nvass gmx.com>
> M>   Submitted by:	zec
> M>   Tested by:	Nikos Vassiliadis <nvass gmx.com>
> M>   MFC after:	1 week
> M> 
> M> Modified:
> M>   head/sys/net/if_lagg.c
> M> 
> M> Modified: head/sys/net/if_lagg.c
> M> ==============================================================================
> M> --- head/sys/net/if_lagg.c	Fri Jun  7 09:06:50 2013	(r251489)
> M> +++ head/sys/net/if_lagg.c	Fri Jun  7 10:27:50 2013	(r251490)
> M> @@ -505,7 +505,9 @@ lagg_port_setlladdr(void *arg, int pendi
> M>  		ifp = llq->llq_ifp;
> M>  
> M>  		/* Set the link layer address */
> M> +		CURVNET_SET(ifp->if_vnet);
> M>  		error = if_setlladdr(ifp, llq->llq_lladdr, ETHER_ADDR_LEN);
> M> +		CURVNET_RESTORE();
> M>  		if (error)
> M>  			printf("%s: setlladdr failed on %s\n", __func__,
> M>  			    ifp->if_xname);
> 
> IMHO, the entire task function should be embraced into VNET context.

The VNET context is obtained from ifp, which is taken from the queue
just one line above.

It might be taken from lagg interface, supposing that all the lagg
ports are in the same vnet, but this may not always be true, e.g. when
you moving a lagg and its ports to another vnet, one by one.

-- 
Mikolaj Golub


More information about the svn-src-all mailing list