]> www.infradead.org Git - users/jedix/linux-maple.git/commit
tc: Return an error if filters try to attach too many actions
authorToke Høiland-Jørgensen <toke@redhat.com>
Wed, 9 Apr 2025 14:55:23 +0000 (16:55 +0200)
committerJakub Kicinski <kuba@kernel.org>
Wed, 16 Apr 2025 00:13:11 +0000 (17:13 -0700)
commit5f5f92912b439ef4db4fcfaa9826b01cc6e4fc85
treee080659aaf30fbfae11a08e4b62dbd13e95697f7
parentbbfc077d457272bcea4f14b3a28247ade99b196d
tc: Return an error if filters try to attach too many actions

While developing the fix for the buffer sizing issue in [0], I noticed
that the kernel will happily accept a long list of actions for a filter,
and then just silently truncate that list down to a maximum of 32
actions.

That seems less than ideal, so this patch changes the action parsing to
return an error message and refuse to create the filter in this case.
This results in an error like:

 # ip link add type veth
 # tc qdisc replace dev veth0 root handle 1: fq_codel
 # tc -echo filter add dev veth0 parent 1: u32 match u32 0 0 $(for i in $(seq 33); do echo action pedit munge ip dport set 22; done)
Error: Only 32 actions supported per filter.
We have an error talking to the kernel

Instead of just creating a filter with 32 actions and dropping the last
one.

This is obviously a change in UAPI. But seeing as creating more than 32
filters has never actually *worked*, it seems that returning an explicit
error is better, and any use cases that get broken by this were already
broken just in more subtle ways.

[0] https://lore.kernel.org/r/20250407105542.16601-1-toke@redhat.com

Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
Link: https://patch.msgid.link/20250409145523.164506-1-toke@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/sched/act_api.c