Skip to content

Commit 1296c11

Browse files
ummakynesgregkh
authored andcommitted
netfilter: nft_set_rbtree: skip end interval element from gc
commit 60c0c23 upstream. rbtree lazy gc on insert might collect an end interval element that has been just added in this transactions, skip end interval elements that are not yet active. Fixes: f718863 ("netfilter: nft_set_rbtree: fix overlap expiration walk") Cc: stable@vger.kernel.org Reported-by: lonial con <kongln9170@gmail.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent d89a80e commit 1296c11

1 file changed

Lines changed: 3 additions & 3 deletions

File tree

net/netfilter/nft_set_rbtree.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ static void nft_rbtree_gc_remove(struct net *net, struct nft_set *set,
235235

236236
static const struct nft_rbtree_elem *
237237
nft_rbtree_gc_elem(const struct nft_set *__set, struct nft_rbtree *priv,
238-
struct nft_rbtree_elem *rbe, u8 genmask)
238+
struct nft_rbtree_elem *rbe)
239239
{
240240
struct nft_set *set = (struct nft_set *)__set;
241241
struct rb_node *prev = rb_prev(&rbe->node);
@@ -254,7 +254,7 @@ nft_rbtree_gc_elem(const struct nft_set *__set, struct nft_rbtree *priv,
254254
while (prev) {
255255
rbe_prev = rb_entry(prev, struct nft_rbtree_elem, node);
256256
if (nft_rbtree_interval_end(rbe_prev) &&
257-
nft_set_elem_active(&rbe_prev->ext, genmask))
257+
nft_set_elem_active(&rbe_prev->ext, NFT_GENMASK_ANY))
258258
break;
259259

260260
prev = rb_prev(prev);
@@ -365,7 +365,7 @@ static int __nft_rbtree_insert(const struct net *net, const struct nft_set *set,
365365
nft_set_elem_active(&rbe->ext, cur_genmask)) {
366366
const struct nft_rbtree_elem *removed_end;
367367

368-
removed_end = nft_rbtree_gc_elem(set, priv, rbe, genmask);
368+
removed_end = nft_rbtree_gc_elem(set, priv, rbe);
369369
if (IS_ERR(removed_end))
370370
return PTR_ERR(removed_end);
371371

0 commit comments

Comments
 (0)