Index: sys/netinet/in_pcb.c =================================================================== --- sys/netinet/in_pcb.c (revision 316485) +++ sys/netinet/in_pcb.c (working copy) @@ -291,6 +291,7 @@ if (inp == NULL) return (ENOBUFS); bzero(inp, inp_zero_size); + bzero(&inp->inp_rtu, sizeof(inp->inp_rtu)); inp->inp_pcbinfo = pcbinfo; inp->inp_socket = so; inp->inp_cred = crhold(so->so_cred); Index: sys/netinet/in_pcb.h =================================================================== --- sys/netinet/in_pcb.h (revision 316485) +++ sys/netinet/in_pcb.h (working copy) @@ -461,7 +461,7 @@ } __aligned(CACHE_LINE_SIZE); #define INP_LOCK_INIT(inp, d, t) \ - rw_init_flags(&(inp)->inp_lock, (t), RW_RECURSE | RW_DUPOK) + rw_init_flags(&(inp)->inp_lock, (t), RW_RECURSE | RW_DUPOK | RW_NEW) #define INP_LOCK_DESTROY(inp) rw_destroy(&(inp)->inp_lock) #define INP_RLOCK(inp) rw_rlock(&(inp)->inp_lock) #define INP_WLOCK(inp) rw_wlock(&(inp)->inp_lock)