mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
netfilter: nft_set_rbtree: check for inactive element after flag mismatch
[ Upstream commit05b7639da5] Otherwise, we hit bogus ENOENT when removing elements. Fixes:e701001e7c("netfilter: nft_rbtree: allow adjacent intervals with dynamic updates") Reported-by: Václav Zindulka <vaclav.zindulka@tlapnet.cz> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: Sasha Levin (Microsoft) <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
2fbb4c48f1
commit
5f7e5b9bba
@@ -302,10 +302,6 @@ static void *nft_rbtree_deactivate(const struct net *net,
|
||||
else if (d > 0)
|
||||
parent = parent->rb_right;
|
||||
else {
|
||||
if (!nft_set_elem_active(&rbe->ext, genmask)) {
|
||||
parent = parent->rb_left;
|
||||
continue;
|
||||
}
|
||||
if (nft_rbtree_interval_end(rbe) &&
|
||||
!nft_rbtree_interval_end(this)) {
|
||||
parent = parent->rb_left;
|
||||
@@ -314,6 +310,9 @@ static void *nft_rbtree_deactivate(const struct net *net,
|
||||
nft_rbtree_interval_end(this)) {
|
||||
parent = parent->rb_right;
|
||||
continue;
|
||||
} else if (!nft_set_elem_active(&rbe->ext, genmask)) {
|
||||
parent = parent->rb_left;
|
||||
continue;
|
||||
}
|
||||
nft_rbtree_flush(net, set, rbe);
|
||||
return rbe;
|
||||
|
||||
Reference in New Issue
Block a user