]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
netlink: let core handle error cases in dump operations
authorEric Dumazet <edumazet@google.com>
Wed, 6 Mar 2024 10:24:26 +0000 (10:24 +0000)
committerJakub Kicinski <kuba@kernel.org>
Fri, 8 Mar 2024 04:48:22 +0000 (20:48 -0800)
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>
Reviewed-by: Simon Horman <horms@kernel.org>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: David Ahern <dsahern@kernel.org>
Link: https://lore.kernel.org/r/20240306102426.245689-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/core/rtnetlink.c
net/ipv4/devinet.c
net/ipv4/fib_frontend.c
net/ipv6/addrconf.c

index e0353487c57ead8418087133da67bda8a03e6ed9..a3d7847ce69d36401051526acf30211d96e2b24e 100644 (file)
@@ -2267,11 +2267,8 @@ walk_entries:
                                       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));
index 4daa8124f247c256c4f8c1ff29ac621570af0755..7a437f0d41905e6acfdc35743afba3a7abfd0dd5 100644 (file)
@@ -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;
 }
index bf3a2214fe29b6f9b494581b293259e6c5ce6f8c..48741352a88a72e0232977cc9f2cf172f45df89b 100644 (file)
@@ -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++;
index 2f84e6ecf19f48602cadb47bc378c9b5a1cdbf65..f786b65d12e43c53ed36535880f6e6d35879a44e 100644 (file)
@@ -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();