Skip to content

Commit babc3dc

Browse files
committed
netfilter: nft_set_rbtree: overlap detection with element re-addition after deletion
This patch fixes spurious EEXIST errors. Extend d2df92e ("netfilter: nft_set_rbtree: handle element re-addition after deletion") to deal with elements with same end flags in the same transation. Reset the overlap flag as described by 7c84d41 ("netfilter: nft_set_rbtree: Detect partial overlaps on insertion"). Fixes: 7c84d41 ("netfilter: nft_set_rbtree: Detect partial overlaps on insertion") Fixes: d2df92e ("netfilter: nft_set_rbtree: handle element re-addition after deletion") Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Reviewed-by: Stefano Brivio <sbrivio@redhat.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
1 parent eba1a87 commit babc3dc

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

net/netfilter/nft_set_rbtree.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,11 @@ static int __nft_rbtree_insert(const struct net *net, const struct nft_set *set,
349349
*ext = &rbe->ext;
350350
return -EEXIST;
351351
} else {
352-
p = &parent->rb_left;
352+
overlap = false;
353+
if (nft_rbtree_interval_end(rbe))
354+
p = &parent->rb_left;
355+
else
356+
p = &parent->rb_right;
353357
}
354358
}
355359

0 commit comments

Comments
 (0)