Linux kernel source tree
 
 
 
 
 
 
Go to file
Pablo Neira Ayuso 318cb24a4c netfilter: nft_set_rbtree: Switch to node list walk for overlap detection
[ Upstream commit c9e6978e27 ]

...instead of a tree descent, which became overly complicated in an
attempt to cover cases where expired or inactive elements would affect
comparisons with the new element being inserted.

Further, it turned out that it's probably impossible to cover all those
cases, as inactive nodes might entirely hide subtrees consisting of a
complete interval plus a node that makes the current insertion not
overlap.

To speed up the overlap check, descent the tree to find a greater
element that is closer to the key value to insert. Then walk down the
node list for overlap detection. Starting the overlap check from
rb_first() unconditionally is slow, it takes 10 times longer due to the
full linear traversal of the list.

Moreover, perform garbage collection of expired elements when walking
down the node list to avoid bogus overlap reports.

For the insertion operation itself, this essentially reverts back to the
implementation before commit 7c84d41416 ("netfilter: nft_set_rbtree:
Detect partial overlaps on insertion"), except that cases of complete
overlap are already handled in the overlap detection phase itself, which
slightly simplifies the loop to find the insertion point.

Based on initial patch from Stefano Brivio, including text from the
original patch description too.

Fixes: 7c84d41416 ("netfilter: nft_set_rbtree: Detect partial overlaps on insertion")
Reviewed-by: Stefano Brivio <sbrivio@redhat.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-02-01 08:34:44 +01:00
Documentation regulator: dt-bindings: samsung,s2mps14: add lost samsung,ext-control-gpios 2023-02-01 08:34:39 +01:00
LICENSES LICENSES/LGPL-2.1: Add LGPL-2.1-or-later as valid identifiers 2021-12-16 14:33:10 +01:00
arch ARM: 9280/1: mm: fix warning on phys_addr_t to void pointer assignment 2023-02-01 08:34:39 +01:00
block block: mq-deadline: Rename deadline_is_seq_writes() 2023-01-24 07:24:44 +01:00
certs certs: make system keyring depend on built-in x509 parser 2022-09-24 04:31:18 +09:00
crypto crypto: tcrypt - Fix multibuffer skcipher speed test mem leak 2022-12-31 13:32:34 +01:00
drivers ACPI: video: Add backlight=native DMI quirk for Asus U46E 2023-02-01 08:34:44 +01:00
fs ovl: fail on invalid uid/gid mapping at copy up 2023-02-01 08:34:38 +01:00
include drm/drm_vma_manager: Add drm_vma_node_allow_once() 2023-02-01 08:34:42 +01:00
init gcc: disable -Warray-bounds for gcc-11 too 2023-01-14 10:33:43 +01:00
io_uring io_uring: always prep_async for drain requests 2023-02-01 08:34:42 +01:00
ipc ipc: fix memory leak in init_mqueue_fs() 2022-12-31 13:32:01 +01:00
kernel trace_events_hist: add check for return value of 'create_hist_field' 2023-02-01 08:34:37 +01:00
lib netlink: prevent potential spectre v1 gadgets 2023-02-01 08:34:43 +01:00
mm panic: Consolidate open-coded panic_on_warn checks 2023-01-24 07:24:41 +01:00
net netfilter: nft_set_rbtree: Switch to node list walk for overlap detection 2023-02-01 08:34:44 +01:00
rust Kbuild: add Rust support 2022-09-28 09:02:20 +02:00
samples ftrace: Export ftrace_free_filter() to modules 2023-02-01 08:34:37 +01:00
scripts ftrace/scripts: Update the instructions for ftrace-bisect.sh 2023-02-01 08:34:37 +01:00
security tomoyo: fix broken dependency on *.conf.default 2023-02-01 08:34:06 +01:00
sound ASoC: fsl-asoc-card: Fix naming of AC'97 CODEC widgets 2023-02-01 08:34:31 +01:00
tools Revert "selftests/bpf: check null propagation only neither reg is PTR_TO_BTF_ID" 2023-02-01 08:34:34 +01:00
usr usr/gen_init_cpio.c: remove unnecessary -1 values from int file 2022-10-03 14:21:44 -07:00
virt kvm/vfio: Fix potential deadlock on vfio group_lock 2023-02-01 08:34:36 +01:00
.clang-format inet: ping: use hlist_nulls rcu iterator during lookup 2022-12-01 12:42:46 +01:00
.cocciconfig
.get_maintainer.ignore get_maintainer: add Alan to .get_maintainer.ignore 2022-08-20 15:17:44 -07:00
.gitattributes .gitattributes: use 'dts' diff driver for dts files 2019-12-04 19:44:11 -08:00
.gitignore Kbuild: add Rust support 2022-09-28 09:02:20 +02:00
.mailmap 9 hotfixes. 6 for MM, 3 for other areas. Four of these patches address 2022-12-10 17:10:52 -08:00
.rustfmt.toml rust: add `.rustfmt.toml` 2022-09-28 09:02:20 +02:00
COPYING COPYING: state that all contributions really are covered by this file 2020-02-10 13:32:20 -08:00
CREDITS MAINTAINERS: Remove Michal Marek from Kbuild maintainers 2022-11-16 14:53:00 +09:00
Kbuild Kbuild updates for v6.1 2022-10-10 12:00:45 -07:00
Kconfig kbuild: ensure full rebuild when the compiler is updated 2020-05-12 13:28:33 +09:00
MAINTAINERS panic: Expose "warn_count" to sysfs 2023-01-24 07:24:41 +01:00
Makefile kbuild: fix 'make modules' error when CONFIG_DEBUG_INFO_BTF_MODULES=y 2023-02-01 08:34:08 +01:00
README

README

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.