Commit 02e24903 authored by Eric Dumazet's avatar Eric Dumazet Committed by Jakub Kicinski
Browse files

netlink: let core handle error cases in dump operations



After commit b5a89915 ("netlink: handle EMSGSIZE errors
in the core"), we can remove some code that was not 100 % correct
anyway.

Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Reviewed-by: default avatarIdo Schimmel <idosch@nvidia.com>
Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
Link: https://lore.kernel.org/r/20240306102426.245689-1-edumazet@google.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 4af9a0be
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -2267,12 +2267,9 @@ 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));
	if (netnsid >= 0)
+0 −4
Original line number Diff line number Diff line
@@ -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;
}
+1 −6
Original line number Diff line number Diff line
@@ -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++;
+1 −6
Original line number Diff line number Diff line
@@ -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,12 +6156,9 @@ 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();

	return err;