Message ID | 20181105063715.21639-1-avagin@gmail.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Series | sock_diag: fix autoloading of the raw_diag module | expand |
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 <gorcunov@gmail.com> > Cc: Xin Long <lucien.xin@gmail.com> > Fixes: bf2ae2e4bf93 ("sock_diag: request _diag module only when the family or proto has been registered") > Signed-off-by: Andrei Vagin <avagin@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.
On Mon, Nov 05, 2018 at 10:12:34AM +0300, Cyrill Gorcunov wrote: > > 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. After spending some time on this idea I think your patch is better, since it is small and suitable for a -stable fix (because the former issue is definitely changing the kernel behaviour, the fix should be passed to -stable as well). Reviewed-by: Cyrill Gorcunov <gorcunov@gmail.com>
From: Andrei Vagin <avagin@gmail.com> Date: Sun, 4 Nov 2018 22:37:15 -0800 > IPPROTO_TCP isn't registred as an inet protocol, so > inet_protos[protocol] is always NULL for it. > > Cc: Cyrill Gorcunov <gorcunov@gmail.com> > Cc: Xin Long <lucien.xin@gmail.com> > Fixes: bf2ae2e4bf93 ("sock_diag: request _diag module only when the family or proto has been registered") > Signed-off-by: Andrei Vagin <avagin@gmail.com> Applied and queued up for -stable.
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
IPPROTO_TCP isn't registred as an inet protocol, so inet_protos[protocol] is always NULL for it. Cc: Cyrill Gorcunov <gorcunov@gmail.com> Cc: Xin Long <lucien.xin@gmail.com> Fixes: bf2ae2e4bf93 ("sock_diag: request _diag module only when the family or proto has been registered") Signed-off-by: Andrei Vagin <avagin@gmail.com> --- net/core/sock.c | 1 + 1 file changed, 1 insertion(+)