Commit babc3dc9 authored by Pablo Neira Ayuso's avatar Pablo Neira Ayuso
Browse files

netfilter: nft_set_rbtree: overlap detection with element re-addition after deletion



This patch fixes spurious EEXIST errors.

Extend d2df92e9 ("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 7c84d414 ("netfilter:
nft_set_rbtree: Detect partial overlaps on insertion").

Fixes: 7c84d414 ("netfilter: nft_set_rbtree: Detect partial overlaps on insertion")
Fixes: d2df92e9 ("netfilter: nft_set_rbtree: handle element re-addition after deletion")
Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
Reviewed-by: default avatarStefano Brivio <sbrivio@redhat.com>
Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
parent eba1a872
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -349,7 +349,11 @@ static int __nft_rbtree_insert(const struct net *net, const struct nft_set *set,
				*ext = &rbe->ext;
				return -EEXIST;
			} else {
				overlap = false;
				if (nft_rbtree_interval_end(rbe))
					p = &parent->rb_left;
				else
					p = &parent->rb_right;
			}
		}