Message ID | 20240301011331.2945115-1-kuba@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Commit | 429679dcf7d918b7bb523d89bde3307fb02496c3 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net] page_pool: fix netlink dump stop/resume | expand |
On Fri, Mar 1, 2024 at 2:13 AM Jakub Kicinski <kuba@kernel.org> wrote: > > If message fills up we need to stop writing. 'break' will > only get us out of the iteration over pools of a single > netdev, we need to also stop walking netdevs. > > This results in either infinite dump, or missing pools, > depending on whether message full happens on the last > netdev (infinite dump) or non-last (missing pools). > > Fixes: 950ab53b77ab ("net: page_pool: implement GET in the netlink API") > Signed-off-by: Jakub Kicinski <kuba@kernel.org> Reviewed-by: Eric Dumazet <edumazet@google.com>
Hello: This patch was applied to netdev/net.git (main) by David S. Miller <davem@davemloft.net>: On Thu, 29 Feb 2024 17:13:31 -0800 you wrote: > If message fills up we need to stop writing. 'break' will > only get us out of the iteration over pools of a single > netdev, we need to also stop walking netdevs. > > This results in either infinite dump, or missing pools, > depending on whether message full happens on the last > netdev (infinite dump) or non-last (missing pools). > > [...] Here is the summary with links: - [net] page_pool: fix netlink dump stop/resume https://git.kernel.org/netdev/net/c/429679dcf7d9 You are awesome, thank you!
diff --git a/net/core/page_pool_user.c b/net/core/page_pool_user.c index ffe5244e5597..278294aca66a 100644 --- a/net/core/page_pool_user.c +++ b/net/core/page_pool_user.c @@ -94,11 +94,12 @@ netdev_nl_page_pool_get_dump(struct sk_buff *skb, struct netlink_callback *cb, state->pp_id = pool->user.id; err = fill(skb, pool, info); if (err) - break; + goto out; } state->pp_id = 0; } +out: mutex_unlock(&page_pools_lock); rtnl_unlock();
If message fills up we need to stop writing. 'break' will only get us out of the iteration over pools of a single netdev, we need to also stop walking netdevs. This results in either infinite dump, or missing pools, depending on whether message full happens on the last netdev (infinite dump) or non-last (missing pools). Fixes: 950ab53b77ab ("net: page_pool: implement GET in the netlink API") Signed-off-by: Jakub Kicinski <kuba@kernel.org> --- CC: hawk@kernel.org --- net/core/page_pool_user.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)