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

!9969 v2 netfilter: nft_set_pipapo: do not free live element

parents 60fc77d8 5932b479
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -1932,6 +1932,8 @@ static void nft_pipapo_remove(const struct net *net, const struct nft_set *set,
		rules_fx = rules_f0;

		nft_pipapo_for_each_field(f, i, m) {
			bool last = i == m->field_count - 1;

			if (!pipapo_match_field(f, start, rules_fx,
						match_start, match_end))
				break;
@@ -1944,17 +1946,19 @@ static void nft_pipapo_remove(const struct net *net, const struct nft_set *set,

			match_start += NFT_PIPAPO_GROUPS_PADDED_SIZE(f);
			match_end += NFT_PIPAPO_GROUPS_PADDED_SIZE(f);
		}

		if (i == m->field_count) {
			if (last && f->mt[rulemap[i].to].e == e) {
				priv->dirty = true;
				pipapo_drop(m, rulemap);
				pipapo_commit(set);
				return;
			}
		}

		first_rule += rules_f0;
	}

	WARN_ON_ONCE(1); /* elem_priv not found */
}

/**