On Apr 7, 3:42pm, [email protected] (Ryota Ozaki) wrote: -- Subject: Re: RFC: nexthop cache separation
| On Thu, Apr 7, 2016 at 12:52 AM, Christos Zoulas <[email protected]> wrote: | > On Apr 6, 11:53pm, [email protected] (Ryota Ozaki) wrote: | > -- Subject: Re: RFC: nexthop cache separation | > | > | I set up an nfs client on NetBSD and an nfs server was Linux | > | (that I can set up quickly :-/). | > | | > | So you set up an nfs server and nfs client(s) and | > | the panic happens on the server, right? | > | > My nfs client is linux, and yes the panic happens on the server. | > I also have 2 interfaces and use it as an IPv6 gateway. | | It seems that just setting up an nfs server and IPv6 gateway | and providing some load by nfs clients (and IPv6 traffic) | cannot reproduce the problem. Could you please provide more | details setups: the kernel configuration, nfs setups and outputs | of netstat -nr/arp -na/ndp -na/ifconfig/ps xa (in a private mail | if confidential). It also crashes for me without nfs. It is a dual interface machine running both ipv4 and ipv6 and doing packet forwarding for both protocols. My kernel config has all the pax options turned on (ASLR/MPROTECT/SEGVGUARD) and my userland is PIE/SSP. This all used to work before this change. Now I only have to try to compile a kernel and it dies (without NFS). With NFS I cannot even boot. Also if I put some debugging, it fires during boot... I don't see why we drop routing messages. I fixed the RTM_MISS issue, but there are probably more. christos Index: uipc_socket2.c =================================================================== RCS file: /cvsroot/src/sys/kern/uipc_socket2.c,v retrieving revision 1.122 diff -u -u -r1.122 uipc_socket2.c --- uipc_socket2.c 24 Aug 2015 22:21:26 -0000 1.122 +++ uipc_socket2.c 7 Apr 2016 12:17:49 -0000 @@ -968,11 +968,15 @@ if (n->m_next == NULL) /* keep pointer to last control buf */ break; } - if (space > sbspace(sb)) + if (space > sbspace(sb)) { +printf("%s, %d: %d %ld\n", __func__, __LINE__, space, sbspace(sb)); return (0); + } m = m_get(M_DONTWAIT, MT_SONAME); - if (m == NULL) + if (m == NULL) { +printf("%s, %d: nomem\n", __func__, __LINE__); return (0); + } MCLAIM(m, sb->sb_mowner); /* * XXX avoid 'comparison always true' warning which isn't easily @@ -982,6 +986,7 @@ if (len > MLEN) { MEXTMALLOC(m, asa->sa_len, M_NOWAIT); if ((m->m_flags & M_EXT) == 0) { +printf("%s, %d: %d %ld\n", __func__, __LINE__, len, MLEN); m_free(m); return (0); } christos
