[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CANn89iKYHMpeWh7+rf-UcJeMRcRvOMSc_SnHaqa0Yhkh=OZexw@mail.gmail.com>
Date: Fri, 1 Mar 2024 09:35:52 +0100
From: Eric Dumazet <edumazet@...gle.com>
To: Jakub Kicinski <kuba@...nel.org>
Cc: davem@...emloft.net, netdev@...r.kernel.org, pabeni@...hat.com,
johannes@...solutions.net, fw@...len.de, pablo@...filter.org,
idosch@...dia.com, jiri@...nulli.us, kuniyu@...zon.com
Subject: Re: [PATCH net-next 1/3] netlink: handle EMSGSIZE errors in the core
On Fri, Mar 1, 2024 at 2:31 AM Jakub Kicinski <kuba@...nel.org> wrote:
>
> Eric points out that our current suggested way of handling
> EMSGSIZE errors ((err == -EMSGSIZE) ? skb->len : err) will
> break if we didn't fit even a single object into the buffer
> provided by the user. This should not happen for well behaved
> applications, but we can fix that, and free netlink families
> from dealing with that completely by moving error handling
> into the core.
>
> Let's assume from now on that all EMSGSIZE errors in dumps are
> because we run out of skb space. Families can now propagate
> the error nla_put_*() etc generated and not worry about any
> return value magic. If some family really wants to send EMSGSIZE
> to user space, assuming it generates the same error on the next
> dump iteration the skb->len should be 0, and user space should
> still see the EMSGSIZE.
>
> This should simplify families and prevent mistakes in return
> values which lead to DONE being forced into a separate recv()
> call as discovered by Ido some time ago.
>
> Signed-off-by: Jakub Kicinski <kuba@...nel.org>
Reviewed-by: Eric Dumazet <edumazet@...gle.com>
Powered by blists - more mailing lists