Commit b91b396d authored by Jozsef Kadlecsik's avatar Jozsef Kadlecsik

netfilter: ipset: list:set: make sure all elements are checked by the gc

When an element timed out, the next one was skipped by the garbage
collector, fixed.
Signed-off-by: default avatarJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
parent 40cd63bf
...@@ -218,13 +218,16 @@ set_cleanup_entries(struct ip_set *set) ...@@ -218,13 +218,16 @@ set_cleanup_entries(struct ip_set *set)
{ {
struct list_set *map = set->data; struct list_set *map = set->data;
struct set_elem *e; struct set_elem *e;
u32 i; u32 i = 0;
for (i = 0; i < map->size; i++) { while (i < map->size) {
e = list_set_elem(set, map, i); e = list_set_elem(set, map, i);
if (e->id != IPSET_INVALID_ID && if (e->id != IPSET_INVALID_ID &&
ip_set_timeout_expired(ext_timeout(e, set))) ip_set_timeout_expired(ext_timeout(e, set)))
list_set_del(set, i); list_set_del(set, i);
/* Check element moved to position i in next loop */
else
i++;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment