* [PATCH iproute2] ip: netconf: fix overzealous error checking
@ 2024-10-09 18:21 Jakub Kicinski
2024-10-11 18:32 ` patchwork-bot+netdevbpf
0 siblings, 1 reply; 2+ messages in thread
From: Jakub Kicinski @ 2024-10-09 18:21 UTC (permalink / raw)
To: stephen; +Cc: dsahern, netdev, Jakub Kicinski
The rtnetlink.sh kernel test started reporting errors after
iproute2 update. The error checking introduced by commit
under fixes is incorrect. rtnl_listen() always returns
an error, because the only way to break the loop is to
return an error from the handler, it seems.
Switch this code to using normal rtnl_talk(), instead of
the rtnl_listen() abuse. As far as I can tell the use of
rtnl_listen() was to make get and dump use common handling
but that's no longer the case, anyway.
Before:
$ ip -6 netconf show dev lo
inet6 lo forwarding off mc_forwarding off proxy_neigh off ignore_routes_with_linkdown off
$ echo $?
2
After:
$ ./ip/ip -6 netconf show dev lo
inet6 lo forwarding off mc_forwarding off proxy_neigh off ignore_routes_with_linkdown off
$ echo $?
0
Fixes: 00e8a64dac3b ("ip: detect errors in netconf monitor mode")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
We're also missing opening a JSON object here, but I'll send
that fix separately, to -next?
---
ip/ipnetconf.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/ip/ipnetconf.c b/ip/ipnetconf.c
index 77147eb69097..cf27e7e30a5a 100644
--- a/ip/ipnetconf.c
+++ b/ip/ipnetconf.c
@@ -187,16 +187,16 @@ static int do_show(int argc, char **argv)
ll_init_map(&rth);
if (filter.ifindex && filter.family != AF_UNSPEC) {
+ struct nlmsghdr *answer;
+
req.ncm.ncm_family = filter.family;
addattr_l(&req.n, sizeof(req), NETCONFA_IFINDEX,
&filter.ifindex, sizeof(filter.ifindex));
- if (rtnl_send(&rth, &req.n, req.n.nlmsg_len) < 0) {
- perror("Can not send request");
- exit(1);
- }
- if (rtnl_listen(&rth, print_netconf, stdout) < 0)
+ if (rtnl_talk(&rth, &req.n, &answer) < 0)
exit(2);
+
+ print_netconf2(answer, stdout);
} else {
rth.flags = RTNL_HANDLE_F_SUPPRESS_NLERR;
dump:
--
2.46.2
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH iproute2] ip: netconf: fix overzealous error checking
2024-10-09 18:21 [PATCH iproute2] ip: netconf: fix overzealous error checking Jakub Kicinski
@ 2024-10-11 18:32 ` patchwork-bot+netdevbpf
0 siblings, 0 replies; 2+ messages in thread
From: patchwork-bot+netdevbpf @ 2024-10-11 18:32 UTC (permalink / raw)
To: Jakub Kicinski; +Cc: stephen, dsahern, netdev
Hello:
This patch was applied to iproute2/iproute2.git (main)
by Stephen Hemminger <stephen@networkplumber.org>:
On Wed, 9 Oct 2024 11:21:54 -0700 you wrote:
> The rtnetlink.sh kernel test started reporting errors after
> iproute2 update. The error checking introduced by commit
> under fixes is incorrect. rtnl_listen() always returns
> an error, because the only way to break the loop is to
> return an error from the handler, it seems.
>
> Switch this code to using normal rtnl_talk(), instead of
> the rtnl_listen() abuse. As far as I can tell the use of
> rtnl_listen() was to make get and dump use common handling
> but that's no longer the case, anyway.
>
> [...]
Here is the summary with links:
- [iproute2] ip: netconf: fix overzealous error checking
https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/commit/?id=6887a0656dad
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2024-10-11 18:32 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-09 18:21 [PATCH iproute2] ip: netconf: fix overzealous error checking Jakub Kicinski
2024-10-11 18:32 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).