summaryrefslogtreecommitdiff
path: root/tools/lib/python/kdoc/python_version.py
diff options
context:
space:
mode:
authorJamal Hadi Salim <jhs@mojatatu.com>2026-10-13 04:54:31 -0400
committerJakub Kicinski <kuba@kernel.org>2026-10-20 12:55:52 -0700
commit10a486c17dff0e88122344b27351a5b22e018099 (patch)
tree3913a155fd5290e729c93a6c1bfb1efc04650371 /tools/lib/python/kdoc/python_version.py
parent2bc124a5f8df56aeabd444cded132407d91d9876 (diff)
net/sched: act_api: report an oversized action dump instead of silently truncating it
The issue: tcf_dump_walker() trims the half-built nest and returns the number of actions dumped so far as soon as one action does not fit. When the action at the current index cannot be serialized even into an *empty* dump skb, that count is zero, so tc_dump_action() returns skb->len (zero) and netlink sends NLMSG_DONE with no error: "tc actions ls" silently drops that action and every action after it. That case is reachable inside the gate entry cap this series adds: a gate entry serializes to 36 bytes (40 with the gate-open flag) while a dump skb is clamped to SKB_WITH_OVERHEAD(32768) by netlink_recvmsg()/netlink_dump(), so the top of the range the cap admits installs but cannot be dumped - and, before this change, fails silently. The Fix: tcf_dump_walker() already has to distinguish the two cases: a walk that filled the skb before completing the current action must keep returning a positive count so netlink retries that action in a fresh skb, while an action that cannot be serialized even into an empty skb must return -EMSGSIZE. So return n_i when anything was dumped and -EMSGSIZE (with an extack) when nothing was, and let tc_dump_action() propagate the walker's error code instead of overwriting it with skb->len. That mirrors tc_dump_tfilter(), which returns the walker error when a retry made no progress (if (skb->len == 0 && err) return err;), and tc_dump_chain() carries the same idiom. This is netlink's documented contract: -EMSGSIZE with data in the skb means "more to dump", -EMSGSIZE with an empty skb is delivered to user space. Context note: The shared nla_put_failure label stamps -EMSGSIZE for any inner tcf_action_dump_1()/terse failure, not only a size failure, consistent with how every other nla_put_failure label in the file reports; the -EMSGSIZE the action dump now returns is therefore not a strict size assertion. The cap stays a memory bound; this only makes an action the cap admits but the dump buffer cannot carry fail loudly instead of silently truncating the list. This is a long-standing silent failure, not a regression, so it is net-next hardening. Reported-by: Paul Moses <p@1g4.org> Closes: https://lore.kernel.org/netdev/vPFrhbkwAui8zFPcGQTUDazQfsFDlr5GYuaYQ5BxJcrDiT6x1EljEze4cYadHqbeUW2ivLdpa8eC_cXC6ceACswgb-lW47aSVkHvHjhn_X8=@1g4.org/ Suggested-by: Paul Moses <p@1g4.org> Reviewed-by: Victor Nogueira <victor@mojatatu.com> Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com> Link: https://patch.msgid.link/QDISC-H19Z.v3.r0.20261012193813-5@mojatatu.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'tools/lib/python/kdoc/python_version.py')
0 files changed, 0 insertions, 0 deletions