From af3525d41001431e3d170214170dfe7dd73435b9 Mon Sep 17 00:00:00 2001 From: Jakub Kicinski Date: Thu, 9 Jan 2025 16:45:04 -0800 Subject: [PATCH] net: warn during dump if NAPI list is not sorted Dump continuation depends on the NAPI list being sorted. Broken netlink dump continuation may be rare and hard to debug so add a warning if we notice the potential problem while walking the list. Reviewed-by: Michal Swiatkowski Reviewed-by: Joe Damato Link: https://patch.msgid.link/20250110004505.3210140-1-kuba@kernel.org Signed-off-by: Jakub Kicinski --- net/core/netdev-genl.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/net/core/netdev-genl.c b/net/core/netdev-genl.c index a3bdaf075b6b..c59619a2ec23 100644 --- a/net/core/netdev-genl.c +++ b/net/core/netdev-genl.c @@ -263,14 +263,21 @@ netdev_nl_napi_dump_one(struct net_device *netdev, struct sk_buff *rsp, struct netdev_nl_dump_ctx *ctx) { struct napi_struct *napi; + unsigned int prev_id; int err = 0; if (!(netdev->flags & IFF_UP)) return err; + prev_id = UINT_MAX; list_for_each_entry(napi, &netdev->napi_list, dev_list) { if (napi->napi_id < MIN_NAPI_ID) continue; + + /* Dump continuation below depends on the list being sorted */ + WARN_ON_ONCE(napi->napi_id >= prev_id); + prev_id = napi->napi_id; + if (ctx->napi_id && napi->napi_id >= ctx->napi_id) continue; -- 2.47.3