diff options
author | Alexandre Ferrieux <alexandre.ferrieux@gmail.com> | 2024-11-10 18:28:36 +0100 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2024-11-13 03:26:03 +0100 |
commit | 73af53d82076bbe184d9ece9e14b0dc8599e6055 (patch) | |
tree | 24297073f910e35a18cd48019ed264fa1e34b6fd /net/sched/act_csum.c | |
parent | MAINTAINERS: Re-add cancelled Renesas driver sections (diff) | |
download | linux-73af53d82076bbe184d9ece9e14b0dc8599e6055.tar.xz linux-73af53d82076bbe184d9ece9e14b0dc8599e6055.zip |
net: sched: cls_u32: Fix u32's systematic failure to free IDR entries for hnodes.
To generate hnode handles (in gen_new_htid()), u32 uses IDR and
encodes the returned small integer into a structured 32-bit
word. Unfortunately, at disposal time, the needed decoding
is not done. As a result, idr_remove() fails, and the IDR
fills up. Since its size is 2048, the following script ends up
with "Filter already exists":
tc filter add dev myve $FILTER1
tc filter add dev myve $FILTER2
for i in {1..2048}
do
echo $i
tc filter del dev myve $FILTER2
tc filter add dev myve $FILTER2
done
This patch adds the missing decoding logic for handles that
deserve it.
Fixes: e7614370d6f0 ("net_sched: use idr to allocate u32 filter handles")
Reviewed-by: Eric Dumazet <edumazet@google.com>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: Alexandre Ferrieux <alexandre.ferrieux@orange.com>
Tested-by: Victor Nogueira <victor@mojatatu.com>
Link: https://patch.msgid.link/20241110172836.331319-1-alexandre.ferrieux@orange.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/sched/act_csum.c')
0 files changed, 0 insertions, 0 deletions