All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Horman <horms@kernel.org>
To: Eric Dumazet <edumazet@google.com>
Cc: "David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	netdev@vger.kernel.org, eric.dumazet@gmail.com,
	Ido Schimmel <idosch@nvidia.com>,
	David Ahern <dsahern@kernel.org>
Subject: Re: [PATCH net-next] netlink: let core handle error cases in dump operations
Date: Thu, 7 Mar 2024 09:35:30 +0000	[thread overview]
Message-ID: <20240307093530.GI281974@kernel.org> (raw)
In-Reply-To: <20240306102426.245689-1-edumazet@google.com>

+ Ido Schimmel, David Ahern

On Wed, Mar 06, 2024 at 10:24:26AM +0000, Eric Dumazet wrote:
> After commit b5a899154aa9 ("netlink: handle EMSGSIZE errors
> in the core"), we can remove some code that was not 100 % correct
> anyway.
> 
> Signed-off-by: Eric Dumazet <edumazet@google.com>

Thanks Eric,

this looks like a nice clean-up in combination with the cited commit.

Reviewed-by: Simon Horman <horms@kernel.org>

> ---
>  net/core/rtnetlink.c    | 5 +----
>  net/ipv4/devinet.c      | 4 ----
>  net/ipv4/fib_frontend.c | 7 +------
>  net/ipv6/addrconf.c     | 7 +------
>  4 files changed, 3 insertions(+), 20 deletions(-)
> 
> diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
> index 780b330f8ef9fa4881b9d51570d1a65f5171ee5d..7eac6765df098fd685937ace63dfb5add9c77731 100644
> --- a/net/core/rtnetlink.c
> +++ b/net/core/rtnetlink.c
> @@ -2267,11 +2267,8 @@ static int rtnl_dump_ifinfo(struct sk_buff *skb, struct netlink_callback *cb)
>  				       nlh->nlmsg_seq, 0, flags,
>  				       ext_filter_mask, 0, NULL, 0,
>  				       netnsid, GFP_KERNEL);
> -		if (err < 0) {
> -			if (likely(skb->len))
> -				err = skb->len;
> +		if (err < 0)
>  			break;
> -		}
>  	}
>  	cb->seq = tgt_net->dev_base_seq;
>  	nl_dump_check_consistent(cb, nlmsg_hdr(skb));
> diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
> index 4daa8124f247c256c4f8c1ff29ac621570af0755..7a437f0d41905e6acfdc35743afba3a7abfd0dd5 100644
> --- a/net/ipv4/devinet.c
> +++ b/net/ipv4/devinet.c
> @@ -1900,8 +1900,6 @@ static int inet_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb)
>  			goto done;
>  	}
>  done:
> -	if (err < 0 && likely(skb->len))
> -		err = skb->len;
>  	if (fillargs.netnsid >= 0)
>  		put_net(tgt_net);
>  	rcu_read_unlock();
> @@ -2312,8 +2310,6 @@ static int inet_netconf_dump_devconf(struct sk_buff *skb,
>  		ctx->all_default++;
>  	}
>  done:
> -	if (err < 0 && likely(skb->len))
> -		err = skb->len;
>  	rcu_read_unlock();
>  	return err;
>  }
> diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
> index bf3a2214fe29b6f9b494581b293259e6c5ce6f8c..48741352a88a72e0232977cc9f2cf172f45df89b 100644
> --- a/net/ipv4/fib_frontend.c
> +++ b/net/ipv4/fib_frontend.c
> @@ -1026,8 +1026,6 @@ static int inet_dump_fib(struct sk_buff *skb, struct netlink_callback *cb)
>  			goto unlock;
>  		}
>  		err = fib_table_dump(tb, skb, cb, &filter);
> -		if (err < 0 && skb->len)
> -			err = skb->len;
>  		goto unlock;
>  	}
>  
> @@ -1045,11 +1043,8 @@ static int inet_dump_fib(struct sk_buff *skb, struct netlink_callback *cb)
>  				memset(&cb->args[2], 0, sizeof(cb->args) -
>  						 2 * sizeof(cb->args[0]));
>  			err = fib_table_dump(tb, skb, cb, &filter);
> -			if (err < 0) {
> -				if (likely(skb->len))
> -					err = skb->len;
> +			if (err < 0)
>  				goto out;
> -			}
>  			dumped = 1;
>  next:
>  			e++;
> diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
> index 2f84e6ecf19f48602cadb47bc378c9b5a1cdbf65..f786b65d12e43c53ed36535880f6e6d35879a44e 100644
> --- a/net/ipv6/addrconf.c
> +++ b/net/ipv6/addrconf.c
> @@ -793,8 +793,6 @@ static int inet6_netconf_dump_devconf(struct sk_buff *skb,
>  		ctx->all_default++;
>  	}
>  done:
> -	if (err < 0 && likely(skb->len))
> -		err = skb->len;
>  	rcu_read_unlock();
>  	return err;
>  }
> @@ -6158,11 +6156,8 @@ static int inet6_dump_ifinfo(struct sk_buff *skb, struct netlink_callback *cb)
>  					NETLINK_CB(cb->skb).portid,
>  					cb->nlh->nlmsg_seq,
>  					RTM_NEWLINK, NLM_F_MULTI);
> -		if (err < 0) {
> -			if (likely(skb->len))
> -				err = skb->len;
> +		if (err < 0)
>  			break;
> -		}
>  	}
>  	rcu_read_unlock();
>  
> -- 
> 2.44.0.278.ge034bb2e1d-goog
> 
> 

  reply	other threads:[~2024-03-07  9:35 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-06 10:24 [PATCH net-next] netlink: let core handle error cases in dump operations Eric Dumazet
2024-03-07  9:35 ` Simon Horman [this message]
2024-03-07 14:45   ` Ido Schimmel
2024-03-07 19:32   ` David Ahern
2024-03-08  5:00 ` patchwork-bot+netdevbpf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240307093530.GI281974@kernel.org \
    --to=horms@kernel.org \
    --cc=davem@davemloft.net \
    --cc=dsahern@kernel.org \
    --cc=edumazet@google.com \
    --cc=eric.dumazet@gmail.com \
    --cc=idosch@nvidia.com \
    --cc=kuba@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.