From: Phil Sutter <phil@nwl.cc>
To: Pablo Neira Ayuso <pablo@netfilter.org>
Cc: netfilter-devel@vger.kernel.org, Florian Westphal <fw@strlen.de>
Subject: [nft PATCH 1/4] segtree: Drop needless insertion in ei_insert()
Date: Thu, 23 Jan 2020 15:30:46 +0100 [thread overview]
Message-ID: <20200123143049.13888-2-phil@nwl.cc> (raw)
In-Reply-To: <20200123143049.13888-1-phil@nwl.cc>
Code checks whether for two new ranges one fully includes the other. If
so, it would add the contained one only for segtree_linearize() to later
omit the redundant items.
Instead just drop the contained item (which will always come last
because caller orders the new elements in beforehand).
Signed-off-by: Phil Sutter <phil@nwl.cc>
---
src/segtree.c | 25 ++-----------------------
1 file changed, 2 insertions(+), 23 deletions(-)
diff --git a/src/segtree.c b/src/segtree.c
index e8e32412f3a41..aa1f1c38d789c 100644
--- a/src/segtree.c
+++ b/src/segtree.c
@@ -191,9 +191,6 @@ static int ei_insert(struct list_head *msgs, struct seg_tree *tree,
struct elementary_interval *new, bool merge)
{
struct elementary_interval *lei, *rei;
- mpz_t p;
-
- mpz_init2(p, tree->keylen);
/*
* Lookup the intervals containing the left and right endpoints.
@@ -207,25 +204,9 @@ static int ei_insert(struct list_head *msgs, struct seg_tree *tree,
if (lei != NULL && rei != NULL && lei == rei) {
if (!merge)
goto err;
- /*
- * The new interval is entirely contained in the same interval,
- * split it into two parts:
- *
- * [lei_left, new_left) and (new_right, rei_right]
- */
- if (segtree_debug(tree->debug_mask))
- pr_gmp_debug("split [%Zx %Zx]\n", lei->left, lei->right);
- ei_remove(tree, lei);
-
- mpz_sub_ui(p, new->left, 1);
- if (mpz_cmp(lei->left, p) <= 0)
- __ei_insert(tree, ei_alloc(lei->left, p, lei->expr, 0));
-
- mpz_add_ui(p, new->right, 1);
- if (mpz_cmp(p, rei->right) < 0)
- __ei_insert(tree, ei_alloc(p, rei->right, lei->expr, 0));
- ei_destroy(lei);
+ ei_destroy(new);
+ return 0;
} else {
if (lei != NULL) {
if (!merge)
@@ -271,8 +252,6 @@ static int ei_insert(struct list_head *msgs, struct seg_tree *tree,
__ei_insert(tree, new);
- mpz_clear(p);
-
return 0;
err:
errno = EEXIST;
--
2.24.1
next prev parent reply other threads:[~2020-01-23 14:30 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-23 14:30 [nft PATCH 0/4] Covscan-induced review of ei_insert() Phil Sutter
2020-01-23 14:30 ` Phil Sutter [this message]
2020-01-28 11:22 ` [nft PATCH 1/4] segtree: Drop needless insertion in ei_insert() Pablo Neira Ayuso
2020-01-23 14:30 ` [nft PATCH 2/4] segtree: Drop dead code " Phil Sutter
2020-01-28 11:24 ` Pablo Neira Ayuso
2020-01-23 14:30 ` [nft PATCH 3/4] segtree: Simplify overlap case " Phil Sutter
2020-01-28 11:29 ` Pablo Neira Ayuso
2020-01-23 14:30 ` [nft PATCH 4/4] segtree: Refactor ei_insert() Phil Sutter
2020-01-28 12:23 ` Pablo Neira Ayuso
2020-01-28 14:14 ` Phil Sutter
2020-01-28 15:42 ` Pablo Neira Ayuso
2020-01-28 15:55 ` Phil Sutter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200123143049.13888-2-phil@nwl.cc \
--to=phil@nwl.cc \
--cc=fw@strlen.de \
--cc=netfilter-devel@vger.kernel.org \
--cc=pablo@netfilter.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).