svn commit: r275599 - in head/sys/ofed/include: linux net
Marko Zec
zec at fer.hr
Mon Dec 8 08:36:05 UTC 2014
On Mon, 8 Dec 2014 07:26:00 +0000
Craig Rodrigues <rodrigc at 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
>
More information about the svn-src-head
mailing list