From: Jakub Kicinski <kuba@kernel.org>
To: Stefano Brivio <sbrivio@redhat.com>
Cc: davem@davemloft.net, netdev@vger.kernel.org, edumazet@google.com,
pabeni@redhat.com, jiri@resnulli.us, idosch@idosch.org,
johannes@sipsolutions.net, fw@strlen.de, pablo@netfilter.org,
Martin Pitt <mpitt@redhat.com>,
Paul Holzinger <pholzing@redhat.com>,
David Gibson <david@gibson.dropbear.id.au>
Subject: Re: [PATCH net-next v2 3/3] genetlink: fit NLMSG_DONE into same read() as families
Date: Tue, 19 Mar 2024 08:55:45 -0700 [thread overview]
Message-ID: <20240319085545.76445a1e@kernel.org> (raw)
In-Reply-To: <20240315124808.033ff58d@elisabeth>
On Fri, 15 Mar 2024 12:48:08 +0100 Stefano Brivio wrote:
> > Make sure ctrl_fill_info() returns sensible error codes and
> > propagate them out to netlink core. Let netlink core decide
> > when to return skb->len and when to treat the exit as an
> > error. Netlink core does better job at it, if we always
> > return skb->len the core doesn't know when we're done
> > dumping and NLMSG_DONE ends up in a separate read().
>
> While this change is obviously correct, it breaks... well, broken
> applications that _wrongly_ rely on the fact that NLMSG_DONE is
> delivered in a separate datagram.
>
> This was the (embarrassing) case for passt(1), which I just fixed:
> https://archives.passt.top/passt-dev/20240315112432.382212-1-sbrivio@redhat.com/
>
> but the "separate" NLMSG_DONE is such an established behaviour,
> I think, that this might raise a more general concern.
>
> From my perspective, I'm just happy that this change revealed the
> issue, but I wanted to report this anyway in case somebody has
> similar possible breakages in mind.
Hi Stefano! I was worried this may happen :( I think we should revert
offending commits, but I'd like to take it on case by case basis.
I'd imagine majority of netlink is only exercised by iproute2 and
libmnl-based tools. Does passt hang specifically on genetlink family
dump? Your commit also mentions RTM_GETROUTE. This is not the only
commit which removed DONE:
$ git log --since='1 month ago' --grep=NLMSG_DONE --no-merges --oneline
9cc4cc329d30 ipv6: use xa_array iterator to implement inet6_dump_addr()
87d381973e49 genetlink: fit NLMSG_DONE into same read() as families
4ce5dc9316de inet: switch inet_dump_fib() to RCU protection
6647b338fc5c netlink: fix netlink_diag_dump() return value
next prev parent reply other threads:[~2024-03-19 15:55 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-03 5:24 [PATCH net-next v2 0/3] netlink: handle EMSGSIZE errors in the core Jakub Kicinski
2024-03-03 5:24 ` [PATCH net-next v2 1/3] " Jakub Kicinski
2024-03-03 15:01 ` Ido Schimmel
2024-03-03 5:24 ` [PATCH net-next v2 2/3] netdev: let netlink core handle -EMSGSIZE errors Jakub Kicinski
2024-03-03 15:08 ` Ido Schimmel
2024-03-03 5:24 ` [PATCH net-next v2 3/3] genetlink: fit NLMSG_DONE into same read() as families Jakub Kicinski
2024-03-03 15:10 ` Ido Schimmel
2024-03-15 11:48 ` Stefano Brivio
2024-03-19 15:55 ` Jakub Kicinski [this message]
2024-03-19 17:17 ` Eric Dumazet
2024-03-19 17:40 ` Jakub Kicinski
2024-03-21 12:56 ` Gal Pressman
2024-03-21 13:51 ` Ido Schimmel
2024-03-21 15:03 ` Gal Pressman
2024-03-21 17:26 ` Eric Dumazet
2024-03-21 17:41 ` Ido Schimmel
2024-04-03 22:52 ` Ilya Maximets
2024-04-11 15:16 ` Jakub Kicinski
2024-04-11 15:39 ` Ilya Maximets
2024-04-11 15:52 ` Jakub Kicinski
2024-04-11 16:38 ` Ilya Maximets
2024-04-11 18:03 ` Jakub Kicinski
2024-04-11 18:04 ` Jakub Kicinski
2024-03-19 23:36 ` David Gibson
2024-03-06 8:10 ` [PATCH net-next v2 0/3] netlink: handle EMSGSIZE errors in the core 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=20240319085545.76445a1e@kernel.org \
--to=kuba@kernel.org \
--cc=davem@davemloft.net \
--cc=david@gibson.dropbear.id.au \
--cc=edumazet@google.com \
--cc=fw@strlen.de \
--cc=idosch@idosch.org \
--cc=jiri@resnulli.us \
--cc=johannes@sipsolutions.net \
--cc=mpitt@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=pablo@netfilter.org \
--cc=pholzing@redhat.com \
--cc=sbrivio@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.