Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 8 Dec 2014 09:36:06 +0100
From:      Marko Zec <zec@fer.hr>
To:        Craig Rodrigues <rodrigc@freebsd.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, hselasky@freebsd.org
Subject:   Re: svn commit: r275599 - in head/sys/ofed/include: linux net
Message-ID:  <20141208093606.0960142f@x23>
In-Reply-To: <201412080726.sB87Q0Yw034908@svn.freebsd.org>
References:  <201412080726.sB87Q0Yw034908@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 8 Dec 2014 07:26:00 +0000
Craig Rodrigues <rodrigc@freebsd.org> wrote:

> Author: rodrigc
> Date: Mon Dec  8 07:25:59 2014
> New Revision: 275599
> URL: https://svnweb.freebsd.org/changeset/base/275599
> 
> Log:
>   Use CURVNET macros inside inet_get_local_port_range() function.
>   Without this fix, a kernel with VIMAGE + Infiniband will panic on
> bootup.

Why is CURVNET_SET_QUIET() used here instead of plain CURVNET_SET()?

inet_get_local_port_range() seems to be called from only two functions:
cma_alloc_any_port() and cma_init().  Did the panic ocur in both, or
only in cma_init()?  If so, then CURVNET_SET() should have been placed
only inside cma_init() and not in inet_get_local_port_range().

And perhaps all of this stuff could have been completely avoided if
cma_init() was scheduled to fire with curvnet contex already set to
vnet0, using proper SYSINIT scheduling instead of module_init(), i.e.
after SI_SUB_VNET and before SI_SUB_VNET_DONE?

Finally, the comment re. extra #includes and LIST_HEAD seems confusing
since TD_TO_VNET() macro requires both sys/jail.h and net/vnet.h, and
this dependency is unrelated to the LIST_HEAD macro cited in commit log.

Marko


>   Certain necessary #include statements require LIST_HEAD.
>   Add these includes to ofed/include/linux/list.h, because
>   LIST_HEAD is specifically overridden in this file.
>   
>   PR: 191468
>   Differential Revision: D1279
>   Reviewed by: hselasky
> 
> Modified:
>   head/sys/ofed/include/linux/list.h
>   head/sys/ofed/include/net/ip.h
> 
> Modified: head/sys/ofed/include/linux/list.h
> ==============================================================================
> --- head/sys/ofed/include/linux/list.h	Mon Dec  8 07:14:25
> 2014	(r275598) +++ head/sys/ofed/include/linux/list.h
> Mon Dec  8 07:25:59 2014	(r275599) @@ -40,6 +40,7 @@
>  #include <sys/kernel.h>
>  #include <sys/queue.h>
>  #include <sys/cpuset.h>
> +#include <sys/jail.h>
>  #include <sys/lock.h>
>  #include <sys/mutex.h>
>  #include <sys/proc.h>
> @@ -53,6 +54,7 @@
>  #include <net/if_var.h>
>  #include <net/if_types.h>
>  #include <net/if_media.h>
> +#include <net/vnet.h>
>  
>  #include <netinet/in.h>
>  #include <netinet/in_pcb.h>
> 
> Modified: head/sys/ofed/include/net/ip.h
> ==============================================================================
> --- head/sys/ofed/include/net/ip.h	Mon Dec  8 07:14:25
> 2014	(r275598) +++ head/sys/ofed/include/net/ip.h	Mon
> Dec  8 07:25:59 2014	(r275599) @@ -45,8 +45,10 @@
>  #ifdef INET
>  static inline void inet_get_local_port_range(int *low, int *high)
>  {
> +	CURVNET_SET_QUIET(TD_TO_VNET(curthread));
>  	*low = V_ipport_firstauto;
>  	*high = V_ipport_lastauto;
> +	CURVNET_RESTORE();
>  }
>  
>  static inline void
> 




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