Unverified Commit b4ee7fc4 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!4809 netfilter: nft_set_rbtree: skip end interval element from gc

parents 3a76bfcb b429df81
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -216,8 +216,7 @@ static void *nft_rbtree_get(const struct net *net, const struct nft_set *set,

static int nft_rbtree_gc_elem(const struct nft_set *__set,
			      struct nft_rbtree *priv,
			      struct nft_rbtree_elem *rbe,
			      u8 genmask)
			      struct nft_rbtree_elem *rbe)
{
	struct nft_set *set = (struct nft_set *)__set;
	struct rb_node *prev = rb_prev(&rbe->node);
@@ -235,7 +234,7 @@ static int nft_rbtree_gc_elem(const struct nft_set *__set,
	while (prev) {
		rbe_prev = rb_entry(prev, struct nft_rbtree_elem, node);
		if (nft_rbtree_interval_end(rbe_prev) &&
		    nft_set_elem_active(&rbe_prev->ext, genmask))
		    nft_set_elem_active(&rbe_prev->ext, NFT_GENMASK_ANY))
			break;

		prev = rb_prev(prev);
@@ -328,7 +327,7 @@ static int __nft_rbtree_insert(const struct net *net, const struct nft_set *set,

		/* perform garbage collection to avoid bogus overlap reports. */
		if (nft_set_elem_expired(&rbe->ext)) {
			err = nft_rbtree_gc_elem(set, priv, rbe, genmask);
			err = nft_rbtree_gc_elem(set, priv, rbe);
			if (err < 0)
				return err;