tc_dump_qdisc() walks every netdev in the netns and spans many netlink batches on any busy host. RTNL is only held while a single batch is filled, so the device list can change in between and the reply can miss entries -- but nothing under net/sched sets cb->seq, so NLM_F_DUMP_INTR is never raised and userspace cannot tell a partial listing from a complete one. rtnl_dump_ifinfo() already pairs for_each_netdev_dump() with cb->seq = dev_base_seq and nl_dump_check_consistent(); patch 1 does the same for the qdisc dump.
Patch 2 adds a selftest. Netlink dumps are driven by the reader, so it unregisters a device at a known point between two batches instead of racing against one, and a second case requires the flag to stay clear on an undisturbed dump. It fails on net/main and passes with patch 1. Build coverage: allmodconfig builds clean with W=1 -- vmlinux and all modules link, no new warnings, none in net/sched. allyesconfig compiles clean with W=1, including net/sched/sch_api.o with no diagnostics in net/sched, but the final LD of vmlinux.o exceeds the memory of the machine used here, so that link was not completed. Reshma Sreekumar (2): net/sched: flag inconsistent qdisc dumps selftests: net: check that a disturbed qdisc dump is flagged net/sched/sch_api.c | 16 ++- tools/testing/selftests/net/Makefile | 1 + .../testing/selftests/net/qdisc_dump_intr.py | 123 ++++++++++++++++++ 3 files changed, 139 insertions(+), 1 deletion(-) create mode 100755 tools/testing/selftests/net/qdisc_dump_intr.py base-commit: 51b093a7ba27476e1f639455f005e8d2e75390e4 -- 2.43.0

