Add this new nft_rbtree_interval_end() helper function to check in the
end interval is set.

Signed-off-by: Pablo Neira Ayuso <[email protected]>
---
 net/netfilter/nft_rbtree.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/net/netfilter/nft_rbtree.c b/net/netfilter/nft_rbtree.c
index 1c30f41..29f2ab8 100644
--- a/net/netfilter/nft_rbtree.c
+++ b/net/netfilter/nft_rbtree.c
@@ -29,6 +29,11 @@ struct nft_rbtree_elem {
        struct nft_set_ext      ext;
 };
 
+static bool nft_rbtree_interval_end(const struct nft_rbtree_elem *rbe)
+{
+       return nft_set_ext_exists(&rbe->ext, NFT_SET_EXT_FLAGS) &&
+              (*nft_set_ext_flags(&rbe->ext) & NFT_SET_ELEM_INTERVAL_END);
+}
 
 static bool nft_rbtree_lookup(const struct nft_set *set, const u32 *key,
                              const struct nft_set_ext **ext)
@@ -56,9 +61,7 @@ found:
                                parent = parent->rb_left;
                                continue;
                        }
-                       if (nft_set_ext_exists(&rbe->ext, NFT_SET_EXT_FLAGS) &&
-                           *nft_set_ext_flags(&rbe->ext) &
-                           NFT_SET_ELEM_INTERVAL_END)
+                       if (nft_rbtree_interval_end(rbe))
                                goto out;
                        spin_unlock_bh(&nft_rbtree_lock);
 
-- 
2.1.4

Reply via email to