]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
net_sched: sch_fq: rework fq_gc() to avoid stack canary
authorEric Dumazet <edumazet@google.com>
Wed, 4 Feb 2026 19:00:34 +0000 (19:00 +0000)
committerJakub Kicinski <kuba@kernel.org>
Sat, 7 Feb 2026 04:03:44 +0000 (20:03 -0800)
commit2214aab26811c77a15fc1d28bf3112a07b8c8d85
tree62ad1a886237b9018d612f0c55c9539414bc45b7
parent7acee67a6bce02e0af8a4bf7b412e2164d5a48e9
net_sched: sch_fq: rework fq_gc() to avoid stack canary

Using kmem_cache_free_bulk() in fq_gc() was not optimal.

1) It needs an array.
2) It is only saving cpu cycles for large batches.

The automatic array forces a stack canary, which is expensive.

In practice fq_gc was finding zero, one or two flows at most
per round.

Remove the array, use kmem_cache_free().

This makes fq_enqueue() smaller and faster.

$ scripts/bloat-o-meter -t vmlinux.old vmlinux.new
add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-79 (-79)
Function                                     old     new   delta
fq_enqueue                                  1629    1550     -79
Total: Before=24886583, After=24886504, chg -0.00%

Signed-off-by: Eric Dumazet <edumazet@google.com>
Link: https://patch.msgid.link/20260204190034.76277-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/sched/sch_fq.c