diff mbox series

[net] net: don't warn in inet diag when IPV6 is disabled

Message ID 20190701152303.4031-1-stephen@networkplumber.org
State Changes Requested
Delegated to: David Miller
Headers show
Series [net] net: don't warn in inet diag when IPV6 is disabled | expand

Commit Message

Stephen Hemminger July 1, 2019, 3:23 p.m. UTC
If IPV6 was disabled, then ss command would cause a kernel warning
because the command was attempting to dump IPV6 socke information.
This should not be a warning, instead just return a normal error
code.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=202249
Fixes: 432490f9d455 ("net: ip, diag -- Add diag interface for raw sockets")
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 net/ipv4/raw_diag.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

David Miller July 2, 2019, 9:23 p.m. UTC | #1
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Mon,  1 Jul 2019 08:23:03 -0700

> @@ -19,9 +19,11 @@ raw_get_hashinfo(const struct inet_diag_req_v2 *r)
>  {
>  	if (r->sdiag_family == AF_INET) {
>  		return &raw_v4_hashinfo;
> -#if IS_ENABLED(CONFIG_IPV6)
>  	} else if (r->sdiag_family == AF_INET6) {
> +#if IS_ENABLED(CONFIG_IPV6)
>  		return &raw_v6_hashinfo;
> +#else
> +		return ERR_PTR(-EOPNOTSUPP);
>  #endif
>  	} else {
>  		pr_warn_once("Unexpected inet family %d\n",

Let's make some consistency in this area please.

The inet_diag code returns -EINVAL, and that's been that way forever.
It also doesn't print a weird warning for unexpected sdiag_family
values outside of AF_INET and AF_INET6.

That's been that way for so long that's probably the behavior to
revolve everything around.

Therefore, please just get rid of the warning message instead of
all of these other changes.

Thank you.
Stephen Hemminger July 2, 2019, 10:14 p.m. UTC | #2
On Tue, 02 Jul 2019 14:23:47 -0700 (PDT)
David Miller <davem@davemloft.net> wrote:

> From: Stephen Hemminger <stephen@networkplumber.org>
> Date: Mon,  1 Jul 2019 08:23:03 -0700
> 
> > @@ -19,9 +19,11 @@ raw_get_hashinfo(const struct inet_diag_req_v2 *r)
> >  {
> >  	if (r->sdiag_family == AF_INET) {
> >  		return &raw_v4_hashinfo;
> > -#if IS_ENABLED(CONFIG_IPV6)
> >  	} else if (r->sdiag_family == AF_INET6) {
> > +#if IS_ENABLED(CONFIG_IPV6)
> >  		return &raw_v6_hashinfo;
> > +#else
> > +		return ERR_PTR(-EOPNOTSUPP);
> >  #endif
> >  	} else {
> >  		pr_warn_once("Unexpected inet family %d\n",  
> 
> Let's make some consistency in this area please.
> 
> The inet_diag code returns -EINVAL, and that's been that way forever.
> It also doesn't print a weird warning for unexpected sdiag_family
> values outside of AF_INET and AF_INET6.
> 
> That's been that way for so long that's probably the behavior to
> revolve everything around.
> 
> Therefore, please just get rid of the warning message instead of
> all of these other changes.
> 
> Thank you.

Sure, that makes sense.
diff mbox series

Patch

diff --git a/net/ipv4/raw_diag.c b/net/ipv4/raw_diag.c
index 899e34ceb560..045485d39f23 100644
--- a/net/ipv4/raw_diag.c
+++ b/net/ipv4/raw_diag.c
@@ -19,9 +19,11 @@  raw_get_hashinfo(const struct inet_diag_req_v2 *r)
 {
 	if (r->sdiag_family == AF_INET) {
 		return &raw_v4_hashinfo;
-#if IS_ENABLED(CONFIG_IPV6)
 	} else if (r->sdiag_family == AF_INET6) {
+#if IS_ENABLED(CONFIG_IPV6)
 		return &raw_v6_hashinfo;
+#else
+		return ERR_PTR(-EOPNOTSUPP);
 #endif
 	} else {
 		pr_warn_once("Unexpected inet family %d\n",