On Sun, Nov 04, 2018 at 10:37:15PM -0800, Andrei Vagin wrote: > IPPROTO_TCP isn't registred as an inet protocol, so > inet_protos[protocol] is always NULL for it.
Typo, IPPROTO_RAW > > Cc: Cyrill Gorcunov <gorcu...@gmail.com> > Cc: Xin Long <lucien....@gmail.com> > Fixes: bf2ae2e4bf93 ("sock_diag: request _diag module only when the family or > proto has been registered") > Signed-off-by: Andrei Vagin <ava...@gmail.com> > --- > net/core/sock.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/net/core/sock.c b/net/core/sock.c > index 6fcc4bc07d19..080a880a1761 100644 > --- a/net/core/sock.c > +++ b/net/core/sock.c > @@ -3279,6 +3279,7 @@ int sock_load_diag_module(int family, int protocol) > > #ifdef CONFIG_INET > if (family == AF_INET && > + protocol != IPPROTO_RAW && > !rcu_access_pointer(inet_protos[protocol])) > return -ENOENT; > #endif Andrew, looking into kernel code I wonder, maybe we should simply add this protocol into inet_protos during net/ipv4/af_inet.c:inet_init? It will require to add netns_ok into raw_prot of course.