* [PATCH net 0/5] Netfilter fixes for net
@ 2025-06-05 8:57 Pablo Neira Ayuso
2025-06-05 8:57 ` [PATCH net 1/5] netfilter: nf_set_pipapo_avx2: fix initial map fill Pablo Neira Ayuso
` (4 more replies)
0 siblings, 5 replies; 27+ messages in thread
From: Pablo Neira Ayuso @ 2025-06-05 8:57 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw, horms
Hi,
The following patchset contains Netfilter fixes for net:
1) Zero out the remainder in nft_pipapo AVX2 implementation, otherwise
next lookup could bogusly report a mismatch. This is followed by two
patches to update nft_pipapo selftests to cover for the previous bug.
From Florian Westphal.
2) Check for reverse tuple too in case of esoteric NAT collisions for
UDP traffic and extend selftest coverage. Also from Florian.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git nf-25-06-05
Thanks.
----------------------------------------------------------------
The following changes since commit 12c331b29c7397ac3b03584e12902990693bc248:
gve: add missing NULL check for gve_alloc_pending_packet() in TX DQO (2025-06-04 12:06:13 +0100)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git tags/nf-25-06-05
for you to fetch changes up to 3c3c3248496a3a1848ec5d923f2eee0edf60226e:
selftests: netfilter: nft_nat.sh: add test for reverse clash with nat (2025-06-05 10:50:05 +0200)
----------------------------------------------------------------
netfilter pull request 25-06-05
----------------------------------------------------------------
Florian Westphal (5):
netfilter: nf_set_pipapo_avx2: fix initial map fill
selftests: netfilter: nft_concat_range.sh: prefer per element counters for testing
selftests: netfilter: nft_concat_range.sh: add datapath check for map fill bug
netfilter: nf_nat: also check reverse tuple to obtain clashing entry
selftests: netfilter: nft_nat.sh: add test for reverse clash with nat
net/netfilter/nf_nat_core.c | 12 ++-
net/netfilter/nft_set_pipapo_avx2.c | 21 ++++-
.../selftests/net/netfilter/nft_concat_range.sh | 102 ++++++++++++++++++---
tools/testing/selftests/net/netfilter/nft_nat.sh | 81 +++++++++++++++-
4 files changed, 193 insertions(+), 23 deletions(-)
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH net 1/5] netfilter: nf_set_pipapo_avx2: fix initial map fill
2025-06-05 8:57 [PATCH net 0/5] Netfilter fixes for net Pablo Neira Ayuso
@ 2025-06-05 8:57 ` Pablo Neira Ayuso
2025-06-05 13:20 ` patchwork-bot+netdevbpf
2025-06-05 8:57 ` [PATCH net 2/5] selftests: netfilter: nft_concat_range.sh: prefer per element counters for testing Pablo Neira Ayuso
` (3 subsequent siblings)
4 siblings, 1 reply; 27+ messages in thread
From: Pablo Neira Ayuso @ 2025-06-05 8:57 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw, horms
From: Florian Westphal <fw@strlen.de>
If the first field doesn't cover the entire start map, then we must zero
out the remainder, else we leak those bits into the next match round map.
The early fix was incomplete and did only fix up the generic C
implementation.
A followup patch adds a test case to nft_concat_range.sh.
Fixes: 791a615b7ad2 ("netfilter: nf_set_pipapo: fix initial map fill")
Signed-off-by: Florian Westphal <fw@strlen.de>
Reviewed-by: Stefano Brivio <sbrivio@redhat.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
net/netfilter/nft_set_pipapo_avx2.c | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
diff --git a/net/netfilter/nft_set_pipapo_avx2.c b/net/netfilter/nft_set_pipapo_avx2.c
index c15db28c5ebc..be7c16c79f71 100644
--- a/net/netfilter/nft_set_pipapo_avx2.c
+++ b/net/netfilter/nft_set_pipapo_avx2.c
@@ -1113,6 +1113,25 @@ bool nft_pipapo_avx2_estimate(const struct nft_set_desc *desc, u32 features,
return true;
}
+/**
+ * pipapo_resmap_init_avx2() - Initialise result map before first use
+ * @m: Matching data, including mapping table
+ * @res_map: Result map
+ *
+ * Like pipapo_resmap_init() but do not set start map bits covered by the first field.
+ */
+static inline void pipapo_resmap_init_avx2(const struct nft_pipapo_match *m, unsigned long *res_map)
+{
+ const struct nft_pipapo_field *f = m->f;
+ int i;
+
+ /* Starting map doesn't need to be set to all-ones for this implementation,
+ * but we do need to zero the remaining bits, if any.
+ */
+ for (i = f->bsize; i < m->bsize_max; i++)
+ res_map[i] = 0ul;
+}
+
/**
* nft_pipapo_avx2_lookup() - Lookup function for AVX2 implementation
* @net: Network namespace
@@ -1171,7 +1190,7 @@ bool nft_pipapo_avx2_lookup(const struct net *net, const struct nft_set *set,
res = scratch->map + (map_index ? m->bsize_max : 0);
fill = scratch->map + (map_index ? 0 : m->bsize_max);
- /* Starting map doesn't need to be set for this implementation */
+ pipapo_resmap_init_avx2(m, res);
nft_pipapo_avx2_prepare();
--
2.30.2
^ permalink raw reply related [flat|nested] 27+ messages in thread
* Re: [PATCH net 1/5] netfilter: nf_set_pipapo_avx2: fix initial map fill
2025-06-05 8:57 ` [PATCH net 1/5] netfilter: nf_set_pipapo_avx2: fix initial map fill Pablo Neira Ayuso
@ 2025-06-05 13:20 ` patchwork-bot+netdevbpf
0 siblings, 0 replies; 27+ messages in thread
From: patchwork-bot+netdevbpf @ 2025-06-05 13:20 UTC (permalink / raw)
To: Pablo Neira Ayuso
Cc: netfilter-devel, davem, netdev, kuba, pabeni, edumazet, fw, horms
Hello:
This series was applied to netdev/net.git (main)
by Pablo Neira Ayuso <pablo@netfilter.org>:
On Thu, 5 Jun 2025 10:57:31 +0200 you wrote:
> From: Florian Westphal <fw@strlen.de>
>
> If the first field doesn't cover the entire start map, then we must zero
> out the remainder, else we leak those bits into the next match round map.
>
> The early fix was incomplete and did only fix up the generic C
> implementation.
>
> [...]
Here is the summary with links:
- [net,1/5] netfilter: nf_set_pipapo_avx2: fix initial map fill
https://git.kernel.org/netdev/net/c/ea77c397bff8
- [net,2/5] selftests: netfilter: nft_concat_range.sh: prefer per element counters for testing
https://git.kernel.org/netdev/net/c/febe7eda74d1
- [net,3/5] selftests: netfilter: nft_concat_range.sh: add datapath check for map fill bug
https://git.kernel.org/netdev/net/c/38399f2b0fe4
- [net,4/5] netfilter: nf_nat: also check reverse tuple to obtain clashing entry
https://git.kernel.org/netdev/net/c/50d9ce9679dd
- [net,5/5] selftests: netfilter: nft_nat.sh: add test for reverse clash with nat
https://git.kernel.org/netdev/net/c/3c3c3248496a
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH net 2/5] selftests: netfilter: nft_concat_range.sh: prefer per element counters for testing
2025-06-05 8:57 [PATCH net 0/5] Netfilter fixes for net Pablo Neira Ayuso
2025-06-05 8:57 ` [PATCH net 1/5] netfilter: nf_set_pipapo_avx2: fix initial map fill Pablo Neira Ayuso
@ 2025-06-05 8:57 ` Pablo Neira Ayuso
2025-06-05 8:57 ` [PATCH net 3/5] selftests: netfilter: nft_concat_range.sh: add datapath check for map fill bug Pablo Neira Ayuso
` (2 subsequent siblings)
4 siblings, 0 replies; 27+ messages in thread
From: Pablo Neira Ayuso @ 2025-06-05 8:57 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw, horms
From: Florian Westphal <fw@strlen.de>
The selftest uses following rule:
... @test counter name "test"
Then sends a packet, then checks if the named counter did increment or
not.
This is fine for the 'no-match' test case: If anything matches the
counter increments and the test fails as expected.
But for the 'should match' test cases this isn't optimal.
Consider buggy matching, where the packet matches entry x, but it
should have matched entry y.
In that case the test would erronously pass.
Rework the selftest to use per-element counters to avoid this.
After sending packet that should have matched entry x, query the
relevant element via 'nft reset element' and check that its counter
had incremented.
The 'nomatch' case isn't altered, no entry should match so the named
counter must be 0, changing it to the per-element counter would then
pass if another entry matches.
The downside of this change is a slight increase in test run-time by
a few seconds.
Signed-off-by: Florian Westphal <fw@strlen.de>
Reviewed-by: Stefano Brivio <sbrivio@redhat.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
.../net/netfilter/nft_concat_range.sh | 40 ++++++++++++++-----
1 file changed, 30 insertions(+), 10 deletions(-)
diff --git a/tools/testing/selftests/net/netfilter/nft_concat_range.sh b/tools/testing/selftests/net/netfilter/nft_concat_range.sh
index efea93cf23d4..86b8ce742700 100755
--- a/tools/testing/selftests/net/netfilter/nft_concat_range.sh
+++ b/tools/testing/selftests/net/netfilter/nft_concat_range.sh
@@ -419,6 +419,7 @@ table inet filter {
set test {
type ${type_spec}
+ counter
flags interval,timeout
}
@@ -1158,8 +1159,17 @@ del() {
fi
}
-# Return packet count from 'test' counter in 'inet filter' table
+# Return packet count for elem $1 from 'test' counter in 'inet filter' table
count_packets() {
+ found=0
+ for token in $(nft reset element inet filter test "${1}" ); do
+ [ ${found} -eq 1 ] && echo "${token}" && return
+ [ "${token}" = "packets" ] && found=1
+ done
+}
+
+# Return packet count from 'test' counter in 'inet filter' table
+count_packets_nomatch() {
found=0
for token in $(nft list counter inet filter test); do
[ ${found} -eq 1 ] && echo "${token}" && return
@@ -1206,6 +1216,10 @@ perf() {
# Set MAC addresses, send single packet, check that it matches, reset counter
send_match() {
+ local elem="$1"
+
+ shift
+
ip link set veth_a address "$(format_mac "${1}")"
ip -n B link set veth_b address "$(format_mac "${2}")"
@@ -1216,7 +1230,7 @@ send_match() {
eval src_"$f"=\$\(format_\$f "${2}"\)
done
eval send_\$proto
- if [ "$(count_packets)" != "1" ]; then
+ if [ "$(count_packets "$elem")" != "1" ]; then
err "${proto} packet to:"
err " $(for f in ${dst}; do
eval format_\$f "${1}"; printf ' '; done)"
@@ -1242,7 +1256,7 @@ send_nomatch() {
eval src_"$f"=\$\(format_\$f "${2}"\)
done
eval send_\$proto
- if [ "$(count_packets)" != "0" ]; then
+ if [ "$(count_packets_nomatch)" != "0" ]; then
err "${proto} packet to:"
err " $(for f in ${dst}; do
eval format_\$f "${1}"; printf ' '; done)"
@@ -1262,6 +1276,8 @@ send_nomatch() {
test_correctness_main() {
range_size=1
for i in $(seq "${start}" $((start + count))); do
+ local elem=""
+
end=$((start + range_size))
# Avoid negative or zero-sized port ranges
@@ -1272,15 +1288,16 @@ test_correctness_main() {
srcstart=$((start + src_delta))
srcend=$((end + src_delta))
- add "$(format)" || return 1
+ elem="$(format)"
+ add "$elem" || return 1
for j in $(seq "$start" $((range_size / 2 + 1)) ${end}); do
- send_match "${j}" $((j + src_delta)) || return 1
+ send_match "$elem" "${j}" $((j + src_delta)) || return 1
done
send_nomatch $((end + 1)) $((end + 1 + src_delta)) || return 1
# Delete elements now and then
if [ $((i % 3)) -eq 0 ]; then
- del "$(format)" || return 1
+ del "$elem" || return 1
for j in $(seq "$start" \
$((range_size / 2 + 1)) ${end}); do
send_nomatch "${j}" $((j + src_delta)) \
@@ -1572,14 +1589,17 @@ test_timeout() {
range_size=1
for i in $(seq "$start" $((start + count))); do
+ local elem=""
+
end=$((start + range_size))
srcstart=$((start + src_delta))
srcend=$((end + src_delta))
- add "$(format)" || return 1
+ elem="$(format)"
+ add "$elem" || return 1
for j in $(seq "$start" $((range_size / 2 + 1)) ${end}); do
- send_match "${j}" $((j + src_delta)) || return 1
+ send_match "$elem" "${j}" $((j + src_delta)) || return 1
done
range_size=$((range_size + 1))
@@ -1737,7 +1757,7 @@ test_bug_reload() {
srcend=$((end + src_delta))
for j in $(seq "$start" $((range_size / 2 + 1)) ${end}); do
- send_match "${j}" $((j + src_delta)) || return 1
+ send_match "$(format)" "${j}" $((j + src_delta)) || return 1
done
range_size=$((range_size + 1))
@@ -1817,7 +1837,7 @@ test_bug_avx2_mismatch()
dst_addr6="$a2"
send_icmp6
- if [ "$(count_packets)" -gt "0" ]; then
+ if [ "$(count_packets "{ icmpv6 . $a1 }")" -gt "0" ]; then
err "False match for $a2"
return 1
fi
--
2.30.2
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH net 3/5] selftests: netfilter: nft_concat_range.sh: add datapath check for map fill bug
2025-06-05 8:57 [PATCH net 0/5] Netfilter fixes for net Pablo Neira Ayuso
2025-06-05 8:57 ` [PATCH net 1/5] netfilter: nf_set_pipapo_avx2: fix initial map fill Pablo Neira Ayuso
2025-06-05 8:57 ` [PATCH net 2/5] selftests: netfilter: nft_concat_range.sh: prefer per element counters for testing Pablo Neira Ayuso
@ 2025-06-05 8:57 ` Pablo Neira Ayuso
2025-06-05 8:57 ` [PATCH net 4/5] netfilter: nf_nat: also check reverse tuple to obtain clashing entry Pablo Neira Ayuso
2025-06-05 8:57 ` [PATCH net 5/5] selftests: netfilter: nft_nat.sh: add test for reverse clash with nat Pablo Neira Ayuso
4 siblings, 0 replies; 27+ messages in thread
From: Pablo Neira Ayuso @ 2025-06-05 8:57 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw, horms
From: Florian Westphal <fw@strlen.de>
commit 0935ee6032df ("selftests: netfilter: add test case for recent mismatch bug")
added a regression check for incorrect initial fill of the result map
that was fixed with 791a615b7ad2 ("netfilter: nf_set_pipapo: fix initial map fill").
The test used 'nft get element', i.e., control plane checks for
match/nomatch results.
The control plane however doesn't use avx2 version, so we need to
send+match packets.
As the additional packet match/nomatch is slow, don't do this for
every element added/removed: add and use maybe_send_(no)match
helpers and use them.
Signed-off-by: Florian Westphal <fw@strlen.de>
Reviewed-by: Stefano Brivio <sbrivio@redhat.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
.../net/netfilter/nft_concat_range.sh | 62 +++++++++++++++++--
1 file changed, 58 insertions(+), 4 deletions(-)
diff --git a/tools/testing/selftests/net/netfilter/nft_concat_range.sh b/tools/testing/selftests/net/netfilter/nft_concat_range.sh
index 86b8ce742700..cd12b8b5ac0e 100755
--- a/tools/testing/selftests/net/netfilter/nft_concat_range.sh
+++ b/tools/testing/selftests/net/netfilter/nft_concat_range.sh
@@ -378,7 +378,7 @@ display net,port,proto
type_spec ipv4_addr . inet_service . inet_proto
chain_spec ip daddr . udp dport . meta l4proto
dst addr4 port proto
-src
+src
start 1
count 9
src_delta 9
@@ -1269,6 +1269,42 @@ send_nomatch() {
fi
}
+maybe_send_nomatch() {
+ local elem="$1"
+ local what="$4"
+
+ [ $((RANDOM%20)) -gt 0 ] && return
+
+ dst_addr4="$2"
+ dst_port="$3"
+ send_udp
+
+ if [ "$(count_packets_nomatch)" != "0" ]; then
+ err "Packet to $dst_addr4:$dst_port did match $what"
+ err "$(nft -a list ruleset)"
+ return 1
+ fi
+}
+
+maybe_send_match() {
+ local elem="$1"
+ local what="$4"
+
+ [ $((RANDOM%20)) -gt 0 ] && return
+
+ dst_addr4="$2"
+ dst_port="$3"
+ send_udp
+
+ if [ "$(count_packets "{ $elem }")" != "1" ]; then
+ err "Packet to $dst_addr4:$dst_port did not match $what"
+ err "$(nft -a list ruleset)"
+ return 1
+ fi
+ nft reset counter inet filter test >/dev/null
+ nft reset element inet filter test "{ $elem }" >/dev/null
+}
+
# Correctness test template:
# - add ranged element, check that packets match it
# - check that packets outside range don't match it
@@ -1776,22 +1812,34 @@ test_bug_net_port_proto_match() {
range_size=1
for i in $(seq 1 10); do
for j in $(seq 1 20) ; do
- elem=$(printf "10.%d.%d.0/24 . %d1-%d0 . 6-17 " ${i} ${j} ${i} "$((i+1))")
+ local dport=$j
+
+ elem=$(printf "10.%d.%d.0/24 . %d-%d0 . 6-17 " ${i} ${j} ${dport} "$((dport+1))")
+
+ # too slow, do not test all addresses
+ maybe_send_nomatch "$elem" $(printf "10.%d.%d.1" $i $j) $(printf "%d1" $((dport+1))) "before add" || return 1
nft "add element inet filter test { $elem }" || return 1
+
+ maybe_send_match "$elem" $(printf "10.%d.%d.1" $i $j) $(printf "%d" $dport) "after add" || return 1
+
nft "get element inet filter test { $elem }" | grep -q "$elem"
if [ $? -ne 0 ];then
local got=$(nft "get element inet filter test { $elem }")
err "post-add: should have returned $elem but got $got"
return 1
fi
+
+ maybe_send_nomatch "$elem" $(printf "10.%d.%d.1" $i $j) $(printf "%d1" $((dport+1))) "out-of-range" || return 1
done
done
# recheck after set was filled
for i in $(seq 1 10); do
for j in $(seq 1 20) ; do
- elem=$(printf "10.%d.%d.0/24 . %d1-%d0 . 6-17 " ${i} ${j} ${i} "$((i+1))")
+ local dport=$j
+
+ elem=$(printf "10.%d.%d.0/24 . %d-%d0 . 6-17 " ${i} ${j} ${dport} "$((dport+1))")
nft "get element inet filter test { $elem }" | grep -q "$elem"
if [ $? -ne 0 ];then
@@ -1799,6 +1847,9 @@ test_bug_net_port_proto_match() {
err "post-fill: should have returned $elem but got $got"
return 1
fi
+
+ maybe_send_match "$elem" $(printf "10.%d.%d.1" $i $j) $(printf "%d" $dport) "recheck" || return 1
+ maybe_send_nomatch "$elem" $(printf "10.%d.%d.1" $i $j) $(printf "%d1" $((dport+1))) "recheck out-of-range" || return 1
done
done
@@ -1806,9 +1857,10 @@ test_bug_net_port_proto_match() {
for i in $(seq 1 10); do
for j in $(seq 1 20) ; do
local rnd=$((RANDOM%10))
+ local dport=$j
local got=""
- elem=$(printf "10.%d.%d.0/24 . %d1-%d0 . 6-17 " ${i} ${j} ${i} "$((i+1))")
+ elem=$(printf "10.%d.%d.0/24 . %d-%d0 . 6-17 " ${i} ${j} ${dport} "$((dport+1))")
if [ $rnd -gt 0 ];then
continue
fi
@@ -1819,6 +1871,8 @@ test_bug_net_port_proto_match() {
err "post-delete: query for $elem returned $got instead of error."
return 1
fi
+
+ maybe_send_nomatch "$elem" $(printf "10.%d.%d.1" $i $j) $(printf "%d" $dport) "match after deletion" || return 1
done
done
--
2.30.2
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH net 4/5] netfilter: nf_nat: also check reverse tuple to obtain clashing entry
2025-06-05 8:57 [PATCH net 0/5] Netfilter fixes for net Pablo Neira Ayuso
` (2 preceding siblings ...)
2025-06-05 8:57 ` [PATCH net 3/5] selftests: netfilter: nft_concat_range.sh: add datapath check for map fill bug Pablo Neira Ayuso
@ 2025-06-05 8:57 ` Pablo Neira Ayuso
2025-06-05 8:57 ` [PATCH net 5/5] selftests: netfilter: nft_nat.sh: add test for reverse clash with nat Pablo Neira Ayuso
4 siblings, 0 replies; 27+ messages in thread
From: Pablo Neira Ayuso @ 2025-06-05 8:57 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw, horms
From: Florian Westphal <fw@strlen.de>
The logic added in the blamed commit was supposed to only omit nat source
port allocation if neither the existing nor the new entry are subject to
NAT.
However, its not enough to lookup the conntrack based on the proposed
tuple, we must also check the reverse direction.
Otherwise there are esoteric cases where the collision is in the reverse
direction because that colliding connection has a port rewrite, but the
new entry doesn't. In this case, we only check the new entry and then
erronously conclude that no clash exists anymore.
The existing (udp) tuple is:
a:p -> b:P, with nat translation to s:P, i.e. pure daddr rewrite,
reverse tuple in conntrack table is s:P -> a:p.
When another UDP packet is sent directly to s, i.e. a:p->s:P, this is
correctly detected as a colliding entry: tuple is taken by existing reply
tuple in reverse direction.
But the colliding conntrack is only searched for with unreversed
direction, and we can't find such entry matching a:p->s:P.
The incorrect conclusion is that the clashing entry has timed out and
that no port address translation is required.
Such conntrack will then be discarded at nf_confirm time because the
proposed reverse direction clashes with an existing mapping in the
conntrack table.
Search for the reverse tuple too, this will then check the NAT bits of
the colliding entry and triggers port reallocation.
Followp patch extends nft_nat.sh selftest to cover this scenario.
The IPS_SEQ_ADJUST change is also a bug fix:
Instead of checking for SEQ_ADJ this tested for SEEN_REPLY and ASSURED
by accident -- _BIT is only for use with the test_bit() API.
This bug has little consequence in practice, because the sequence number
adjustments are only useful for TCP which doesn't support clash resolution.
The existing test case (conntrack_reverse_clash.sh) exercise a race
condition path (parallel conntrack creation on different CPUs), so
the colliding entries have neither SEEN_REPLY nor ASSURED set.
Thanks to Yafang Shao and Shaun Brady for an initial investigation
of this bug.
Fixes: d8f84a9bc7c4 ("netfilter: nf_nat: don't try nat source port reallocation for reverse dir clash")
Closes: https://bugzilla.netfilter.org/show_bug.cgi?id=1795
Reported-by: Yafang Shao <laoar.shao@gmail.com>
Reported-by: Shaun Brady <brady.1345@gmail.com>
Signed-off-by: Florian Westphal <fw@strlen.de>
Tested-by: Yafang Shao <laoar.shao@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
net/netfilter/nf_nat_core.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/net/netfilter/nf_nat_core.c b/net/netfilter/nf_nat_core.c
index aad84aabd7f1..f391cd267922 100644
--- a/net/netfilter/nf_nat_core.c
+++ b/net/netfilter/nf_nat_core.c
@@ -248,7 +248,7 @@ static noinline bool
nf_nat_used_tuple_new(const struct nf_conntrack_tuple *tuple,
const struct nf_conn *ignored_ct)
{
- static const unsigned long uses_nat = IPS_NAT_MASK | IPS_SEQ_ADJUST_BIT;
+ static const unsigned long uses_nat = IPS_NAT_MASK | IPS_SEQ_ADJUST;
const struct nf_conntrack_tuple_hash *thash;
const struct nf_conntrack_zone *zone;
struct nf_conn *ct;
@@ -287,8 +287,14 @@ nf_nat_used_tuple_new(const struct nf_conntrack_tuple *tuple,
zone = nf_ct_zone(ignored_ct);
thash = nf_conntrack_find_get(net, zone, tuple);
- if (unlikely(!thash)) /* clashing entry went away */
- return false;
+ if (unlikely(!thash)) {
+ struct nf_conntrack_tuple reply;
+
+ nf_ct_invert_tuple(&reply, tuple);
+ thash = nf_conntrack_find_get(net, zone, &reply);
+ if (!thash) /* clashing entry went away */
+ return false;
+ }
ct = nf_ct_tuplehash_to_ctrack(thash);
--
2.30.2
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH net 5/5] selftests: netfilter: nft_nat.sh: add test for reverse clash with nat
2025-06-05 8:57 [PATCH net 0/5] Netfilter fixes for net Pablo Neira Ayuso
` (3 preceding siblings ...)
2025-06-05 8:57 ` [PATCH net 4/5] netfilter: nf_nat: also check reverse tuple to obtain clashing entry Pablo Neira Ayuso
@ 2025-06-05 8:57 ` Pablo Neira Ayuso
4 siblings, 0 replies; 27+ messages in thread
From: Pablo Neira Ayuso @ 2025-06-05 8:57 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw, horms
From: Florian Westphal <fw@strlen.de>
This will fail without the previous bug fix because we erronously
believe that the clashing entry went way.
However, the clash exists in the opposite direction due to an
existing nat mapping:
PASS: IP statless for ns2-LgTIuS
ERROR: failed to test udp ns1-x4iyOW to ns2-LgTIuS with dnat rule step 2, result: ""
This is partially adapted from test instructions from the below
ubuntu tracker.
Link: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2109889
Signed-off-by: Florian Westphal <fw@strlen.de>
Tested-by: Shaun Brady <brady.1345@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
.../selftests/net/netfilter/nft_nat.sh | 81 +++++++++++++++++--
1 file changed, 76 insertions(+), 5 deletions(-)
diff --git a/tools/testing/selftests/net/netfilter/nft_nat.sh b/tools/testing/selftests/net/netfilter/nft_nat.sh
index 9e39de26455f..a954754b99b3 100755
--- a/tools/testing/selftests/net/netfilter/nft_nat.sh
+++ b/tools/testing/selftests/net/netfilter/nft_nat.sh
@@ -866,6 +866,24 @@ EOF
ip netns exec "$ns0" nft delete table $family nat
}
+file_cmp()
+{
+ local infile="$1"
+ local outfile="$2"
+
+ if ! cmp "$infile" "$outfile";then
+ echo -n "Infile "
+ ls -l "$infile"
+ echo -n "Outfile "
+ ls -l "$outfile"
+ echo "ERROR: in and output file mismatch when checking $msg" 1>&1
+ ret=1
+ return 1
+ fi
+
+ return 0
+}
+
test_stateless_nat_ip()
{
local lret=0
@@ -966,11 +984,7 @@ EOF
wait
- if ! cmp "$INFILE" "$OUTFILE";then
- ls -l "$INFILE" "$OUTFILE"
- echo "ERROR: in and output file mismatch when checking udp with stateless nat" 1>&2
- lret=1
- fi
+ file_cmp "$INFILE" "$OUTFILE" "udp with stateless nat" || lret=1
:> "$OUTFILE"
@@ -991,6 +1005,62 @@ EOF
return $lret
}
+test_dnat_clash()
+{
+ local lret=0
+
+ if ! socat -h > /dev/null 2>&1;then
+ echo "SKIP: Could not run dnat clash test without socat tool"
+ [ $ret -eq 0 ] && ret=$ksft_skip
+ return $ksft_skip
+ fi
+
+ip netns exec "$ns0" nft -f /dev/stdin <<EOF
+flush ruleset
+table ip dnat-test {
+ chain prerouting {
+ type nat hook prerouting priority dstnat; policy accept;
+ ip daddr 10.0.2.1 udp dport 1234 counter dnat to 10.0.1.1:1234
+ }
+}
+EOF
+ if [ $? -ne 0 ]; then
+ echo "SKIP: Could not add dnat rules"
+ [ $ret -eq 0 ] && ret=$ksft_skip
+ return $ksft_skip
+ fi
+
+ local udpdaddr="10.0.2.1"
+ for i in 1 2;do
+ echo "PING $udpdaddr" > "$INFILE"
+ echo "PONG 10.0.1.1 step $i" | ip netns exec "$ns0" timeout 3 socat STDIO UDP4-LISTEN:1234,bind=10.0.1.1 > "$OUTFILE" 2>/dev/null &
+ local lpid=$!
+
+ busywait $BUSYWAIT_TIMEOUT listener_ready "$ns0" 1234 "-u"
+
+ result=$(ip netns exec "$ns1" timeout 3 socat STDIO UDP4-SENDTO:"$udpdaddr:1234,sourceport=4321" < "$INFILE")
+ udpdaddr="10.0.1.1"
+
+ if [ "$result" != "PONG 10.0.1.1 step $i" ] ; then
+ echo "ERROR: failed to test udp $ns1 to $ns2 with dnat rule step $i, result: \"$result\"" 1>&2
+ lret=1
+ ret=1
+ fi
+
+ wait
+
+ file_cmp "$INFILE" "$OUTFILE" "udp dnat step $i" || lret=1
+
+ :> "$OUTFILE"
+ done
+
+ test $lret -eq 0 && echo "PASS: IP dnat clash $ns1:$ns2"
+
+ ip netns exec "$ns0" nft flush ruleset
+
+ return $lret
+}
+
# ip netns exec "$ns0" ping -c 1 -q 10.0.$i.99
for i in "$ns0" "$ns1" "$ns2" ;do
ip netns exec "$i" nft -f /dev/stdin <<EOF
@@ -1147,6 +1217,7 @@ $test_inet_nat && test_redirect6 inet
test_port_shadowing
test_stateless_nat_ip
+test_dnat_clash
if [ $ret -ne 0 ];then
echo -n "FAIL: "
--
2.30.2
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH net 0/5] Netfilter fixes for net
@ 2024-06-19 17:05 Pablo Neira Ayuso
0 siblings, 0 replies; 27+ messages in thread
From: Pablo Neira Ayuso @ 2024-06-19 17:05 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw
Hi,
The following patchset contains Netfilter fixes for net:
Patch #1 fixes the suspicious RCU usage warning that resulted from the
recent fix for the race between namespace cleanup and gc in
ipset left out checking the pernet exit phase when calling
rcu_dereference_protected(), from Jozsef Kadlecsik.
Patch #2 fixes incorrect input and output netdevice in SRv6 prerouting
hooks, from Jianguo Wu.
Patch #3 moves nf_hooks_lwtunnel sysctl toggle to the netfilter core.
The connection tracking system is loaded on-demand, this
ensures availability of this knob regardless.
Patch #4-#5 adds selftests for SRv6 netfilter hooks also from Jianguo Wu.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git nf-24-06-19
Thanks.
----------------------------------------------------------------
The following changes since commit a8763466669d21b570b26160d0a5e0a2ee529d22:
selftests: openvswitch: Set value to nla flags. (2024-06-19 13:10:53 +0100)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git tags/nf-24-06-19
for you to fetch changes up to 221200ffeb065c6bbd196760c168b42305961655:
selftests: add selftest for the SRv6 End.DX6 behavior with netfilter (2024-06-19 18:42:10 +0200)
----------------------------------------------------------------
netfilter pull request 24-06-19
----------------------------------------------------------------
Jianguo Wu (4):
seg6: fix parameter passing when calling NF_HOOK() in End.DX4 and End.DX6 behaviors
netfilter: move the sysctl nf_hooks_lwtunnel into the netfilter core
selftests: add selftest for the SRv6 End.DX4 behavior with netfilter
selftests: add selftest for the SRv6 End.DX6 behavior with netfilter
Jozsef Kadlecsik (1):
netfilter: ipset: Fix suspicious rcu_dereference_protected()
include/net/netns/netfilter.h | 3 +
net/ipv6/seg6_local.c | 8 +-
net/netfilter/core.c | 13 +-
net/netfilter/ipset/ip_set_core.c | 11 +-
net/netfilter/nf_conntrack_standalone.c | 15 -
net/netfilter/nf_hooks_lwtunnel.c | 67 ++++
net/netfilter/nf_internals.h | 6 +
tools/testing/selftests/net/Makefile | 2 +
tools/testing/selftests/net/config | 2 +
.../selftests/net/srv6_end_dx4_netfilter_test.sh | 335 ++++++++++++++++++++
.../selftests/net/srv6_end_dx6_netfilter_test.sh | 340 +++++++++++++++++++++
11 files changed, 776 insertions(+), 26 deletions(-)
create mode 100755 tools/testing/selftests/net/srv6_end_dx4_netfilter_test.sh
create mode 100755 tools/testing/selftests/net/srv6_end_dx6_netfilter_test.sh
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH net 0/5] Netfilter fixes for net
@ 2024-03-07 2:15 Pablo Neira Ayuso
0 siblings, 0 replies; 27+ messages in thread
From: Pablo Neira Ayuso @ 2024-03-07 2:15 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw
Hi,
The following patchset contains fixes for net:
Patch #1 disallows anonymous sets with timeout, except for dynamic sets.
Anonymous sets with timeouts using the pipapo set backend makes
no sense from userspace perspective.
Patch #2 rejects constant sets with timeout which has no practical usecase.
This kind of set, once bound, contains elements that expire but
no new elements can be added.
Patch #3 restores custom conntrack expectations with NFPROTO_INET,
from Florian Westphal.
Patch #4 marks rhashtable anonymous set with timeout as dead from the
commit path to avoid that async GC collects these elements. Rules
that refers to the anonymous set get released with no mutex held
from the commit path.
Patch #5 fixes a UBSAN shift overflow in H.323 conntrack helper,
from Lena Wang.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git nf-24-03-07
Thanks.
----------------------------------------------------------------
The following changes since commit c055fc00c07be1f0df7375ab0036cebd1106ed38:
net/rds: fix WARNING in rds_conn_connect_if_down (2024-03-06 11:58:42 +0000)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git tags/nf-24-03-07
for you to fetch changes up to 767146637efc528b5e3d31297df115e85a2fd362:
netfilter: nf_conntrack_h323: Add protection for bmp length out of range (2024-03-07 03:10:35 +0100)
----------------------------------------------------------------
netfilter pull request 24-03-07
----------------------------------------------------------------
Florian Westphal (1):
netfilter: nft_ct: fix l3num expectations with inet pseudo family
Lena Wang (1):
netfilter: nf_conntrack_h323: Add protection for bmp length out of range
Pablo Neira Ayuso (3):
netfilter: nf_tables: disallow anonymous set with timeout flag
netfilter: nf_tables: reject constant set with timeout
netfilter: nf_tables: mark set as dead when unbinding anonymous set with timeout
net/netfilter/nf_conntrack_h323_asn1.c | 4 ++++
net/netfilter/nf_tables_api.c | 7 +++++++
net/netfilter/nft_ct.c | 11 +++++------
3 files changed, 16 insertions(+), 6 deletions(-)
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH net 0/5] Netfilter fixes for net
@ 2024-02-22 0:08 Pablo Neira Ayuso
0 siblings, 0 replies; 27+ messages in thread
From: Pablo Neira Ayuso @ 2024-02-22 0:08 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw
Hi,
The following patchset contains Netfilter fixes for net:
1) If user requests to wake up a table and hook fails, restore the
dormant flag from the error path, from Florian Westphal.
2) Reset dst after transferring it to the flow object, otherwise dst
gets released twice from the error path.
3) Release dst in case the flowtable selects a direct xmit path, eg.
transmission to bridge port. Otherwise, dst is memleaked.
4) Register basechain and flowtable hooks at the end of the command.
Error path releases these datastructure without waiting for the
rcu grace period.
5) Use kzalloc() to initialize struct nft_hook to fix a KMSAN report
on access to hook type, also from Florian Westphal.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git nf-24-02-22
Thanks.
----------------------------------------------------------------
The following changes since commit 40b9385dd8e6a0515e1c9cd06a277483556b7286:
enic: Avoid false positive under FORTIFY_SOURCE (2024-02-19 10:57:27 +0000)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git tags/nf-24-02-22
for you to fetch changes up to 195e5f88c2e48330ba5483e0bad2de3b3fad484f:
netfilter: nf_tables: use kzalloc for hook allocation (2024-02-22 00:15:58 +0100)
----------------------------------------------------------------
netfilter pull request 24-02-22
----------------------------------------------------------------
Florian Westphal (2):
netfilter: nf_tables: set dormant flag on hook register failure
netfilter: nf_tables: use kzalloc for hook allocation
Pablo Neira Ayuso (3):
netfilter: nft_flow_offload: reset dst in route object after setting up flow
netfilter: nft_flow_offload: release dst in case direct xmit path is used
netfilter: nf_tables: register hooks last when adding new chain/flowtable
include/net/netfilter/nf_flow_table.h | 2 +-
net/netfilter/nf_flow_table_core.c | 17 ++++++--
net/netfilter/nf_tables_api.c | 81 ++++++++++++++++++-----------------
3 files changed, 57 insertions(+), 43 deletions(-)
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH net 0/5] Netfilter fixes for net
@ 2023-11-08 15:57 Pablo Neira Ayuso
0 siblings, 0 replies; 27+ messages in thread
From: Pablo Neira Ayuso @ 2023-11-08 15:57 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw, kadlec
Hi,
The following patchset contains Netfilter fixes for net:
1) Add missing netfilter modules description to fix W=1, from Florian Westphal.
2) Fix catch-all element GC with timeout when use with the pipapo set
backend, this remained broken since I tried to fix it this summer,
then another attempt to fix it recently.
3) Add missing IPVS modules descriptions to fix W=1, also from Florian.
4) xt_recent allocated a too small buffer to store an IPv4-mapped IPv6
address which can be parsed by in6_pton(), from Maciej Zenczykowski.
Broken for many releases.
5) Skip IPv4-mapped IPv6, IPv4-compat IPv6, site/link local scoped IPv6
addressses to set up IPv6 NAT redirect, also from Florian. This is
broken since 2012.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git nf-23-11-08
Thanks.
----------------------------------------------------------------
The following changes since commit d93f9528573e1d419b69ca5ff4130201d05f6b90:
nfsd: regenerate user space parsers after ynl-gen changes (2023-11-06 09:03:46 +0000)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git tags/nf-23-11-08
for you to fetch changes up to 80abbe8a8263106fe45a4f293b92b5c74cc9cc8a:
netfilter: nat: fix ipv6 nat redirect with mapped and scoped addresses (2023-11-08 16:40:30 +0100)
----------------------------------------------------------------
netfilter pull request 23-11-08
----------------------------------------------------------------
Florian Westphal (3):
netfilter: add missing module descriptions
ipvs: add missing module descriptions
netfilter: nat: fix ipv6 nat redirect with mapped and scoped addresses
Maciej Żenczykowski (1):
netfilter: xt_recent: fix (increase) ipv6 literal buffer length
Pablo Neira Ayuso (1):
netfilter: nf_tables: remove catchall element in GC sync path
net/bridge/netfilter/ebtable_broute.c | 1 +
net/bridge/netfilter/ebtable_filter.c | 1 +
net/bridge/netfilter/ebtable_nat.c | 1 +
net/bridge/netfilter/ebtables.c | 1 +
net/bridge/netfilter/nf_conntrack_bridge.c | 1 +
net/ipv4/netfilter/iptable_nat.c | 1 +
net/ipv4/netfilter/iptable_raw.c | 1 +
net/ipv4/netfilter/nf_defrag_ipv4.c | 1 +
net/ipv4/netfilter/nf_reject_ipv4.c | 1 +
net/ipv6/netfilter/ip6table_nat.c | 1 +
net/ipv6/netfilter/ip6table_raw.c | 1 +
net/ipv6/netfilter/nf_defrag_ipv6_hooks.c | 1 +
net/ipv6/netfilter/nf_reject_ipv6.c | 1 +
net/netfilter/ipvs/ip_vs_core.c | 1 +
net/netfilter/ipvs/ip_vs_dh.c | 1 +
net/netfilter/ipvs/ip_vs_fo.c | 1 +
net/netfilter/ipvs/ip_vs_ftp.c | 1 +
net/netfilter/ipvs/ip_vs_lblc.c | 1 +
net/netfilter/ipvs/ip_vs_lblcr.c | 1 +
net/netfilter/ipvs/ip_vs_lc.c | 1 +
net/netfilter/ipvs/ip_vs_nq.c | 1 +
net/netfilter/ipvs/ip_vs_ovf.c | 1 +
net/netfilter/ipvs/ip_vs_pe_sip.c | 1 +
net/netfilter/ipvs/ip_vs_rr.c | 1 +
net/netfilter/ipvs/ip_vs_sed.c | 1 +
net/netfilter/ipvs/ip_vs_sh.c | 1 +
net/netfilter/ipvs/ip_vs_twos.c | 1 +
net/netfilter/ipvs/ip_vs_wlc.c | 1 +
net/netfilter/ipvs/ip_vs_wrr.c | 1 +
net/netfilter/nf_conntrack_broadcast.c | 1 +
net/netfilter/nf_conntrack_netlink.c | 1 +
net/netfilter/nf_conntrack_proto.c | 1 +
net/netfilter/nf_nat_core.c | 1 +
net/netfilter/nf_nat_redirect.c | 27 ++++++++++++++++++++++++++-
net/netfilter/nf_tables_api.c | 23 ++++++++++++++++++-----
net/netfilter/nfnetlink_osf.c | 1 +
net/netfilter/nft_chain_nat.c | 1 +
net/netfilter/nft_fib.c | 1 +
net/netfilter/nft_fwd_netdev.c | 1 +
net/netfilter/xt_recent.c | 2 +-
40 files changed, 82 insertions(+), 7 deletions(-)
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH net 0/5] Netfilter fixes for net
@ 2023-08-30 23:59 Pablo Neira Ayuso
0 siblings, 0 replies; 27+ messages in thread
From: Pablo Neira Ayuso @ 2023-08-30 23:59 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet
Hi,
The following patchset contains Netfilter fixes for net:
1) Fix mangling of TCP options with non-linear skbuff, from Xiao Liang.
2) OOB read in xt_sctp due to missing sanitization of array length field.
From Wander Lairson Costa.
3) OOB read in xt_u32 due to missing sanitization of array length field.
Also from Wander Lairson Costa.
All of them above, always broken for several releases.
4) Missing audit log for set element reset command, from Phil Sutter.
5) Missing audit log for rule reset command, also from Phil.
These audit log support are missing in 6.5.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git nf-23-08-31
Thanks.
----------------------------------------------------------------
The following changes since commit bd6c11bc43c496cddfc6cf603b5d45365606dbd5:
Merge tag 'net-next-6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next (2023-08-29 11:33:01 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git tags/nf-23-08-31
for you to fetch changes up to ea078ae9108e25fc881c84369f7c03931d22e555:
netfilter: nf_tables: Audit log rule reset (2023-08-31 01:29:28 +0200)
----------------------------------------------------------------
netfilter pull request 23-08-31
----------------------------------------------------------------
Phil Sutter (2):
netfilter: nf_tables: Audit log setelem reset
netfilter: nf_tables: Audit log rule reset
Wander Lairson Costa (2):
netfilter: xt_sctp: validate the flag_info count
netfilter: xt_u32: validate user space input
Xiao Liang (1):
netfilter: nft_exthdr: Fix non-linear header modification
include/linux/audit.h | 2 ++
kernel/auditsc.c | 2 ++
net/netfilter/nf_tables_api.c | 49 ++++++++++++++++++++++++++++++++++++++++---
net/netfilter/nft_exthdr.c | 20 +++++++-----------
net/netfilter/xt_sctp.c | 2 ++
net/netfilter/xt_u32.c | 21 +++++++++++++++++++
6 files changed, 81 insertions(+), 15 deletions(-)
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH net 0/5] Netfilter fixes for net
@ 2023-08-10 7:08 Pablo Neira Ayuso
2023-08-10 7:49 ` Greg KH
2023-08-10 17:46 ` Jakub Kicinski
0 siblings, 2 replies; 27+ messages in thread
From: Pablo Neira Ayuso @ 2023-08-10 7:08 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, stable
Hi,
The following patchset contains Netfilter fixes for net.
The existing attempt to resolve races between control plane and GC work
is error prone, as reported by Bien Pham <phamnnb@sea.com>, some places
forgot to call nft_set_elem_mark_busy(), leading to double-deactivation
of elements.
This series contains the following patches:
1) Do not skip expired elements during walk otherwise elements might
never decrement the reference counter on data, leading to memleak.
2) Add a GC transaction API to replace the former attempt to deal with
races between control plane and GC. GC worker sets on NFT_SET_ELEM_DEAD_BIT
on elements and it creates a GC transaction to remove the expired
elements, GC transaction could abort in case of interference with
control plane and retried later (GC async). Set backends such as
rbtree and pipapo also perform GC from control plane (GC sync), in
such case, element deactivation and removal is safe because mutex
is held then collected elements are released via call_rcu().
3) Adapt existing set backends to use the GC transaction API.
4) Update rhash set backend to set on _DEAD bit to report deleted
elements from datapath for GC.
5) Remove old GC batch API and the NFT_SET_ELEM_BUSY_BIT.
Florian Westphal (1):
netfilter: nf_tables: don't skip expired elements during walk
Pablo Neira Ayuso (4):
netfilter: nf_tables: GC transaction API to avoid race with control plane
netfilter: nf_tables: adapt set backend to use GC transaction API
netfilter: nft_set_hash: mark set element as dead when deleting from packet path
netfilter: nf_tables: remove busy mark and gc batch API
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git nf-23-08-10
Thanks.
----------------------------------------------------------------
The following changes since commit c5ccff70501d92db445a135fa49cf9bc6b98c444:
Merge branch 'net-sched-bind-logic-fixes-for-cls_fw-cls_u32-and-cls_route' (2023-07-31 20:10:39 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git tags/nf-23-08-10
for you to fetch changes up to a2dd0233cbc4d8a0abb5f64487487ffc9265beb5:
netfilter: nf_tables: remove busy mark and gc batch API (2023-08-10 08:25:27 +0200)
----------------------------------------------------------------
netfilter pull request 23-08-10
----------------------------------------------------------------
Florian Westphal (1):
netfilter: nf_tables: don't skip expired elements during walk
Pablo Neira Ayuso (4):
netfilter: nf_tables: GC transaction API to avoid race with control plane
netfilter: nf_tables: adapt set backend to use GC transaction API
netfilter: nft_set_hash: mark set element as dead when deleting from packet path
netfilter: nf_tables: remove busy mark and gc batch API
include/net/netfilter/nf_tables.h | 120 ++++++---------
net/netfilter/nf_tables_api.c | 307 ++++++++++++++++++++++++++++++--------
net/netfilter/nft_set_hash.c | 85 +++++++----
net/netfilter/nft_set_pipapo.c | 66 +++++---
net/netfilter/nft_set_rbtree.c | 146 ++++++++++--------
5 files changed, 476 insertions(+), 248 deletions(-)
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net 0/5] Netfilter fixes for net
2023-08-10 7:08 Pablo Neira Ayuso
@ 2023-08-10 7:49 ` Greg KH
2023-08-10 10:29 ` Pablo Neira Ayuso
2023-08-10 17:46 ` Jakub Kicinski
1 sibling, 1 reply; 27+ messages in thread
From: Greg KH @ 2023-08-10 7:49 UTC (permalink / raw)
To: Pablo Neira Ayuso
Cc: netfilter-devel, davem, netdev, kuba, pabeni, edumazet, stable
On Thu, Aug 10, 2023 at 09:08:25AM +0200, Pablo Neira Ayuso wrote:
> Hi,
>
> The following patchset contains Netfilter fixes for net.
>
> The existing attempt to resolve races between control plane and GC work
> is error prone, as reported by Bien Pham <phamnnb@sea.com>, some places
> forgot to call nft_set_elem_mark_busy(), leading to double-deactivation
> of elements.
>
> This series contains the following patches:
>
> 1) Do not skip expired elements during walk otherwise elements might
> never decrement the reference counter on data, leading to memleak.
>
> 2) Add a GC transaction API to replace the former attempt to deal with
> races between control plane and GC. GC worker sets on NFT_SET_ELEM_DEAD_BIT
> on elements and it creates a GC transaction to remove the expired
> elements, GC transaction could abort in case of interference with
> control plane and retried later (GC async). Set backends such as
> rbtree and pipapo also perform GC from control plane (GC sync), in
> such case, element deactivation and removal is safe because mutex
> is held then collected elements are released via call_rcu().
>
> 3) Adapt existing set backends to use the GC transaction API.
>
> 4) Update rhash set backend to set on _DEAD bit to report deleted
> elements from datapath for GC.
>
> 5) Remove old GC batch API and the NFT_SET_ELEM_BUSY_BIT.
>
> Florian Westphal (1):
> netfilter: nf_tables: don't skip expired elements during walk
>
> Pablo Neira Ayuso (4):
> netfilter: nf_tables: GC transaction API to avoid race with control plane
> netfilter: nf_tables: adapt set backend to use GC transaction API
> netfilter: nft_set_hash: mark set element as dead when deleting from packet path
> netfilter: nf_tables: remove busy mark and gc batch API
>
> Please, pull these changes from:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git nf-23-08-10
>
> Thanks.
>
> ----------------------------------------------------------------
>
> The following changes since commit c5ccff70501d92db445a135fa49cf9bc6b98c444:
>
> Merge branch 'net-sched-bind-logic-fixes-for-cls_fw-cls_u32-and-cls_route' (2023-07-31 20:10:39 -0700)
>
> are available in the Git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git tags/nf-23-08-10
>
> for you to fetch changes up to a2dd0233cbc4d8a0abb5f64487487ffc9265beb5:
>
> netfilter: nf_tables: remove busy mark and gc batch API (2023-08-10 08:25:27 +0200)
>
> ----------------------------------------------------------------
> netfilter pull request 23-08-10
>
> ----------------------------------------------------------------
> Florian Westphal (1):
> netfilter: nf_tables: don't skip expired elements during walk
>
> Pablo Neira Ayuso (4):
> netfilter: nf_tables: GC transaction API to avoid race with control plane
> netfilter: nf_tables: adapt set backend to use GC transaction API
> netfilter: nft_set_hash: mark set element as dead when deleting from packet path
> netfilter: nf_tables: remove busy mark and gc batch API
>
> include/net/netfilter/nf_tables.h | 120 ++++++---------
> net/netfilter/nf_tables_api.c | 307 ++++++++++++++++++++++++++++++--------
> net/netfilter/nft_set_hash.c | 85 +++++++----
> net/netfilter/nft_set_pipapo.c | 66 +++++---
> net/netfilter/nft_set_rbtree.c | 146 ++++++++++--------
> 5 files changed, 476 insertions(+), 248 deletions(-)
<formletter>
This is not the correct way to submit patches for inclusion in the
stable kernel tree. Please read:
https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
for how to do this properly.
</formletter>
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net 0/5] Netfilter fixes for net
2023-08-10 7:49 ` Greg KH
@ 2023-08-10 10:29 ` Pablo Neira Ayuso
0 siblings, 0 replies; 27+ messages in thread
From: Pablo Neira Ayuso @ 2023-08-10 10:29 UTC (permalink / raw)
To: Greg KH; +Cc: netfilter-devel, davem, netdev, kuba, pabeni, edumazet, stable
On Thu, Aug 10, 2023 at 09:49:11AM +0200, Greg KH wrote:
> On Thu, Aug 10, 2023 at 09:08:25AM +0200, Pablo Neira Ayuso wrote:
> > Hi,
> >
> > The following patchset contains Netfilter fixes for net.
> >
> > The existing attempt to resolve races between control plane and GC work
> > is error prone, as reported by Bien Pham <phamnnb@sea.com>, some places
> > forgot to call nft_set_elem_mark_busy(), leading to double-deactivation
> > of elements.
> >
> > This series contains the following patches:
> >
> > 1) Do not skip expired elements during walk otherwise elements might
> > never decrement the reference counter on data, leading to memleak.
> >
> > 2) Add a GC transaction API to replace the former attempt to deal with
> > races between control plane and GC. GC worker sets on NFT_SET_ELEM_DEAD_BIT
> > on elements and it creates a GC transaction to remove the expired
> > elements, GC transaction could abort in case of interference with
> > control plane and retried later (GC async). Set backends such as
> > rbtree and pipapo also perform GC from control plane (GC sync), in
> > such case, element deactivation and removal is safe because mutex
> > is held then collected elements are released via call_rcu().
> >
> > 3) Adapt existing set backends to use the GC transaction API.
> >
> > 4) Update rhash set backend to set on _DEAD bit to report deleted
> > elements from datapath for GC.
> >
> > 5) Remove old GC batch API and the NFT_SET_ELEM_BUSY_BIT.
> >
> > Florian Westphal (1):
> > netfilter: nf_tables: don't skip expired elements during walk
> >
> > Pablo Neira Ayuso (4):
> > netfilter: nf_tables: GC transaction API to avoid race with control plane
> > netfilter: nf_tables: adapt set backend to use GC transaction API
> > netfilter: nft_set_hash: mark set element as dead when deleting from packet path
> > netfilter: nf_tables: remove busy mark and gc batch API
> >
> > Please, pull these changes from:
> >
> > git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git nf-23-08-10
> >
> > Thanks.
> >
> > ----------------------------------------------------------------
> >
> > The following changes since commit c5ccff70501d92db445a135fa49cf9bc6b98c444:
> >
> > Merge branch 'net-sched-bind-logic-fixes-for-cls_fw-cls_u32-and-cls_route' (2023-07-31 20:10:39 -0700)
> >
> > are available in the Git repository at:
> >
> > git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git tags/nf-23-08-10
> >
> > for you to fetch changes up to a2dd0233cbc4d8a0abb5f64487487ffc9265beb5:
> >
> > netfilter: nf_tables: remove busy mark and gc batch API (2023-08-10 08:25:27 +0200)
> >
> > ----------------------------------------------------------------
> > netfilter pull request 23-08-10
> >
> > ----------------------------------------------------------------
> > Florian Westphal (1):
> > netfilter: nf_tables: don't skip expired elements during walk
> >
> > Pablo Neira Ayuso (4):
> > netfilter: nf_tables: GC transaction API to avoid race with control plane
> > netfilter: nf_tables: adapt set backend to use GC transaction API
> > netfilter: nft_set_hash: mark set element as dead when deleting from packet path
> > netfilter: nf_tables: remove busy mark and gc batch API
> >
> > include/net/netfilter/nf_tables.h | 120 ++++++---------
> > net/netfilter/nf_tables_api.c | 307 ++++++++++++++++++++++++++++++--------
> > net/netfilter/nft_set_hash.c | 85 +++++++----
> > net/netfilter/nft_set_pipapo.c | 66 +++++---
> > net/netfilter/nft_set_rbtree.c | 146 ++++++++++--------
> > 5 files changed, 476 insertions(+), 248 deletions(-)
>
> <formletter>
>
> This is not the correct way to submit patches for inclusion in the
> stable kernel tree. Please read:
> https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
> for how to do this properly.
I will re-submit this once this hit upstream.
Thanks.
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net 0/5] Netfilter fixes for net
2023-08-10 7:08 Pablo Neira Ayuso
2023-08-10 7:49 ` Greg KH
@ 2023-08-10 17:46 ` Jakub Kicinski
1 sibling, 0 replies; 27+ messages in thread
From: Jakub Kicinski @ 2023-08-10 17:46 UTC (permalink / raw)
To: Pablo Neira Ayuso
Cc: netfilter-devel, davem, netdev, pabeni, edumazet, stable
We've got some new kdoc warnings here:
net/netfilter/nft_set_pipapo.c:1557: warning: Function parameter or member '_set' not described in 'pipapo_gc'
net/netfilter/nft_set_pipapo.c:1557: warning: Excess function parameter 'set' description in 'pipapo_gc'
include/net/netfilter/nf_tables.h:577: warning: Function parameter or member 'dead' not described in 'nft_set'
Don't think Linus will care enough to complain but it'd be good to get
those cleaned up.
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH net 0/5] Netfilter fixes for net
@ 2023-06-06 22:58 Pablo Neira Ayuso
0 siblings, 0 replies; 27+ messages in thread
From: Pablo Neira Ayuso @ 2023-06-06 22:58 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet, fw
Hi,
The following patchset contains Netfilter fixes for net:
1) Missing nul-check in basechain hook netlink dump path, from Gavrilov Ilia.
2) Fix bitwise register tracking, from Jeremy Sowden.
3) Null pointer dereference when accessing conntrack helper,
from Tijs Van Buggenhout.
4) Add schedule point to ipset's call_ad, from Kuniyuki Iwashima.
5) Incorrect boundary check when building chain blob.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git nf-23-06-07
Thanks.
----------------------------------------------------------------
The following changes since commit 9025944fddfed5966c8f102f1fe921ab3aee2c12:
net: fec: add dma_wmb to ensure correct descriptor values (2023-05-19 09:17:53 +0100)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git tags/nf-23-06-07
for you to fetch changes up to 08e42a0d3ad30f276f9597b591f975971a1b0fcf:
netfilter: nf_tables: out-of-bound check in chain blob (2023-06-07 00:43:44 +0200)
----------------------------------------------------------------
netfilter pull request 23-06-07
----------------------------------------------------------------
Gavrilov Ilia (1):
netfilter: nf_tables: Add null check for nla_nest_start_noflag() in nft_dump_basechain_hook()
Jeremy Sowden (1):
netfilter: nft_bitwise: fix register tracking
Kuniyuki Iwashima (1):
netfilter: ipset: Add schedule point in call_ad().
Pablo Neira Ayuso (1):
netfilter: nf_tables: out-of-bound check in chain blob
Tijs Van Buggenhout (1):
netfilter: conntrack: fix NULL pointer dereference in nf_confirm_cthelper
net/netfilter/ipset/ip_set_core.c | 8 ++++++++
net/netfilter/nf_conntrack_core.c | 3 +++
net/netfilter/nf_tables_api.c | 4 +++-
net/netfilter/nft_bitwise.c | 2 +-
4 files changed, 15 insertions(+), 2 deletions(-)
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH net 0/5] Netfilter fixes for net
@ 2023-04-18 14:50 Pablo Neira Ayuso
0 siblings, 0 replies; 27+ messages in thread
From: Pablo Neira Ayuso @ 2023-04-18 14:50 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet
Hi,
The following patchset contains Netfilter fixes for net:
1) Unbreak br_netfilter physdev match support, from Florian Westphal.
2) Use GFP_KERNEL_ACCOUNT for stateful/policy objects, from Chen Aotian.
3) Use IS_ENABLED() in nf_reset_trace(), from Florian Westphal.
4) Fix validation of catch-all set element.
5) Tighten requirements for catch-all set elements.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git
Thanks.
----------------------------------------------------------------
The following changes since commit 24e3fce00c0b557491ff596c0682a29dee6fe848:
net: stmmac: Add queue reset into stmmac_xdp_open() function (2023-04-05 19:02:56 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git HEAD
for you to fetch changes up to d4eb7e39929a3b1ff30fb751b4859fc2410702a0:
netfilter: nf_tables: tighten netlink attribute requirements for catch-all elements (2023-04-18 09:30:21 +0200)
----------------------------------------------------------------
Chen Aotian (1):
netfilter: nf_tables: Modify nla_memdup's flag to GFP_KERNEL_ACCOUNT
Florian Westphal (2):
netfilter: br_netfilter: fix recent physdev match breakage
netfilter: nf_tables: fix ifdef to also consider nf_tables=m
Pablo Neira Ayuso (2):
netfilter: nf_tables: validate catch-all set elements
netfilter: nf_tables: tighten netlink attribute requirements for catch-all elements
include/linux/skbuff.h | 5 +--
include/net/netfilter/nf_tables.h | 4 +++
net/bridge/br_netfilter_hooks.c | 17 ++++++----
net/netfilter/nf_tables_api.c | 69 ++++++++++++++++++++++++++++++++++-----
net/netfilter/nft_lookup.c | 36 +++-----------------
5 files changed, 83 insertions(+), 48 deletions(-)
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH net 0/5] Netfilter fixes for net
@ 2022-06-21 8:56 Pablo Neira Ayuso
0 siblings, 0 replies; 27+ messages in thread
From: Pablo Neira Ayuso @ 2022-06-21 8:56 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet
Hi,
The following patchset contains Netfilter fixes for net:
1) Use get_random_u32() instead of prandom_u32_state() in nft_meta
and nft_numgen, from Florian Westphal.
2) Incorrect list head in nfnetlink_cttimeout in recent update coming
from previous development cycle. Also from Florian.
3) Incorrect path to pktgen scripts for nft_concat_range.sh selftest.
From Jie2x Zhou.
4) Two fixes for the for nft_fwd and nft_dup egress support, from Florian.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git
Thanks.
----------------------------------------------------------------
The following changes since commit f5826c8c9d57210a17031af5527056eefdc2b7eb:
net/mlx4_en: Fix wrong return value on ioctl EEPROM query failure (2022-06-07 20:49:58 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git HEAD
for you to fetch changes up to fcd53c51d03709bc429822086f1e9b3e88904284:
netfilter: nf_dup_netdev: add and use recursion counter (2022-06-21 10:50:41 +0200)
----------------------------------------------------------------
Florian Westphal (4):
netfilter: use get_random_u32 instead of prandom
netfilter: cttimeout: fix slab-out-of-bounds read typo in cttimeout_net_exit
netfilter: nf_dup_netdev: do not push mac header a second time
netfilter: nf_dup_netdev: add and use recursion counter
Jie2x Zhou (1):
selftests: netfilter: correct PKTGEN_SCRIPT_PATHS in nft_concat_range.sh
net/netfilter/nf_dup_netdev.c | 25 ++++++++++++++++++----
net/netfilter/nfnetlink_cttimeout.c | 2 +-
net/netfilter/nft_meta.c | 13 ++---------
net/netfilter/nft_numgen.c | 12 +++--------
.../selftests/netfilter/nft_concat_range.sh | 2 +-
5 files changed, 28 insertions(+), 26 deletions(-)
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH net 0/5] Netfilter fixes for net
@ 2022-05-31 21:58 Pablo Neira Ayuso
0 siblings, 0 replies; 27+ messages in thread
From: Pablo Neira Ayuso @ 2022-05-31 21:58 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba, pabeni, edumazet
Hi,
1) Missing proper sanitization for nft_set_desc_concat_parse().
2) Missing mutex in nf_tables pre_exit path.
3) Possible double hook unregistration from clean_net path.
4) Missing FLOWI_FLAG_ANYSRC flag in flowtable route lookup.
Fix incorrect source and destination address in case of NAT.
Patch from wenxu.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git
Thanks.
----------------------------------------------------------------
The following changes since commit 09e545f7381459c015b6fa0cd0ac6f010ef8cc25:
xen/netback: fix incorrect usage of RING_HAS_UNCONSUMED_REQUESTS() (2022-05-31 12:22:22 +0200)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf.git HEAD
for you to fetch changes up to 97629b237a8cb7ac655c3969b8d5e57300ff6598:
netfilter: flowtable: fix nft_flow_route source address for nat case (2022-05-31 23:32:53 +0200)
----------------------------------------------------------------
Pablo Neira Ayuso (3):
netfilter: nf_tables: sanitize nft_set_desc_concat_parse()
netfilter: nf_tables: hold mutex on netns pre_exit path
netfilter: nf_tables: double hook unregistration in netns path
wenxu (2):
netfilter: flowtable: fix missing FLOWI_FLAG_ANYSRC flag
netfilter: flowtable: fix nft_flow_route source address for nat case
net/netfilter/nf_tables_api.c | 75 +++++++++++++++++++++++++++++++---------
net/netfilter/nft_flow_offload.c | 6 ++--
2 files changed, 62 insertions(+), 19 deletions(-)
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH net 0/5] Netfilter fixes for net
@ 2022-01-20 12:52 Pablo Neira Ayuso
0 siblings, 0 replies; 27+ messages in thread
From: Pablo Neira Ayuso @ 2022-01-20 12:52 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba
Hi,
The following patchset contains Netfilter fixes for net:
1) Incorrect helper module alias in netbios_ns, from Florian Westphal.
2) Remove unused variable in nf_tables.
3) Uninitialized last expression in nf_tables register tracking.
4) Memleak in nft_connlimit after moving stateful data out of the
expression data area.
5) Bogus invalid stats update when NF_REPEAT is returned, from Florian.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf.git
Thanks.
----------------------------------------------------------------
The following changes since commit 7d6019b602de660bfc6a542a68630006ace83b90:
Revert "net: vertexcom: default to disabled on kbuild" (2022-01-10 21:11:07 -0800)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf.git HEAD
for you to fetch changes up to 830af2eba40327abec64325a5b08b1e85c37a2e0:
netfilter: conntrack: don't increment invalid counter on NF_REPEAT (2022-01-16 00:55:27 +0100)
----------------------------------------------------------------
Florian Westphal (2):
netfilter: nf_conntrack_netbios_ns: fix helper module alias
netfilter: conntrack: don't increment invalid counter on NF_REPEAT
Pablo Neira Ayuso (3):
netfilter: nf_tables: remove unused variable
netfilter: nf_tables: set last expression in register tracking area
netfilter: nft_connlimit: memleak if nf_ct_netns_get() fails
net/netfilter/nf_conntrack_core.c | 8 +++++---
net/netfilter/nf_conntrack_netbios_ns.c | 5 +++--
net/netfilter/nf_tables_api.c | 4 +---
net/netfilter/nft_connlimit.c | 11 ++++++++++-
4 files changed, 19 insertions(+), 9 deletions(-)
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH net 0/5] Netfilter fixes for net
@ 2021-09-29 23:04 Pablo Neira Ayuso
0 siblings, 0 replies; 27+ messages in thread
From: Pablo Neira Ayuso @ 2021-09-29 23:04 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba
Hi,
The following patchset contains Netfilter fixes for net:
1) Move back the defrag users fields to the global netns_nf area.
Kernel fails to boot if conntrack is builtin and kernel is booted
with: nf_conntrack.enable_hooks=1. From Florian Westphal.
2) Rule event notification is missing relevant context such as
the position handle and the NLM_F_APPEND flag.
3) Rule replacement is expanded to add + delete using the existing
rule handle, reverse order of this operation so it makes sense
from rule notification standpoint.
4) Remove superfluous check in the dynamic set extension which
disallow update commands on a set without timeout.
5) Propagate to userspace the NLM_F_CREATE and NLM_F_EXCL flags
from the rule notification path.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf.git
Thanks.
----------------------------------------------------------------
The following changes since commit 3b1b6e82fb5e08e2cb355d7b2ee8644ec289de66:
net: phy: enhance GPY115 loopback disable function (2021-09-27 13:49:38 +0100)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf.git HEAD
for you to fetch changes up to 3d3b30175a51cf027201670af3e2e5b05447b985:
netfilter: nf_tables: honor NLM_F_CREATE and NLM_F_EXCL in event notification (2021-09-28 13:04:56 +0200)
----------------------------------------------------------------
Florian Westphal (1):
netfilter: conntrack: fix boot failure with nf_conntrack.enable_hooks=1
Pablo Neira Ayuso (4):
netfilter: nf_tables: add position handle in event notification
netfilter: nf_tables: reverse order in rule replacement expansion
netfilter: nft_dynset: relax superfluous check on set updates
netfilter: nf_tables: honor NLM_F_CREATE and NLM_F_EXCL in event notification
include/net/netfilter/ipv6/nf_defrag_ipv6.h | 1 -
include/net/netfilter/nf_tables.h | 2 +-
include/net/netns/netfilter.h | 6 ++
net/ipv4/netfilter/nf_defrag_ipv4.c | 30 +++-------
net/ipv6/netfilter/nf_conntrack_reasm.c | 2 +-
net/ipv6/netfilter/nf_defrag_ipv6_hooks.c | 25 +++-----
net/netfilter/nf_tables_api.c | 91 ++++++++++++++++++++---------
net/netfilter/nft_dynset.c | 11 +---
net/netfilter/nft_quota.c | 2 +-
9 files changed, 92 insertions(+), 78 deletions(-)
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH net 0/5] Netfilter fixes for net
@ 2021-09-03 16:30 Pablo Neira Ayuso
0 siblings, 0 replies; 27+ messages in thread
From: Pablo Neira Ayuso @ 2021-09-03 16:30 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba
Hi,
The following patchset contains Netfilter fixes for net:
1) Protect nft_ct template with global mutex, from Pavel Skripkin.
2) Two recent commits switched inet rt and nexthop exception hashes
from jhash to siphash. If those two spots are problematic then
conntrack is affected as well, so switch voer to siphash too.
While at it, add a hard upper limit on chain lengths and reject
insertion if this is hit. Patches from Florian Westphal.
3) Fix use-after-scope in nf_socket_ipv6 reported by KASAN,
from Benjamin Hesmans.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf.git
Thanks.
----------------------------------------------------------------
The following changes since commit 519133debcc19f5c834e7e28480b60bdc234fe02:
net: bridge: fix memleak in br_add_if() (2021-08-10 13:25:14 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf.git HEAD
for you to fetch changes up to 730affed24bffcd1eebd5903171960f5ff9f1f22:
netfilter: socket: icmp6: fix use-after-scope (2021-09-03 18:25:31 +0200)
----------------------------------------------------------------
Benjamin Hesmans (1):
netfilter: socket: icmp6: fix use-after-scope
Florian Westphal (3):
netfilter: conntrack: sanitize table size default settings
netfilter: conntrack: switch to siphash
netfilter: refuse insertion if chain has grown too large
Pavel Skripkin (1):
netfilter: nft_ct: protect nft_ct_pcpu_template_refcnt with mutex
Documentation/networking/nf_conntrack-sysctl.rst | 13 ++-
include/linux/netfilter/nf_conntrack_common.h | 1 +
include/uapi/linux/netfilter/nfnetlink_conntrack.h | 1 +
net/ipv6/netfilter/nf_socket_ipv6.c | 4 +-
net/netfilter/nf_conntrack_core.c | 103 ++++++++++++++-------
net/netfilter/nf_conntrack_expect.c | 25 +++--
net/netfilter/nf_conntrack_netlink.c | 4 +-
net/netfilter/nf_conntrack_standalone.c | 4 +-
net/netfilter/nf_nat_core.c | 18 +++-
net/netfilter/nft_ct.c | 9 +-
10 files changed, 123 insertions(+), 59 deletions(-)
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH net 0/5] Netfilter fixes for net
@ 2020-11-27 19:03 Pablo Neira Ayuso
2020-11-28 21:23 ` Jakub Kicinski
0 siblings, 1 reply; 27+ messages in thread
From: Pablo Neira Ayuso @ 2020-11-27 19:03 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev, kuba
Hi,
The following patchset contains Netfilter fixes for net:
1) Fix insufficient validation of IPSET_ATTR_IPADDR_IPV6 reported
by syzbot.
2) Remove spurious reports on nf_tables when lockdep gets disabled,
from Florian Westphal.
3) Fix memleak in the error path of error path of
ip_vs_control_net_init(), from Wang Hai.
4) Fix missing control data in flow dissector, otherwise IP address
matching in hardware offload infra does not work.
5) Fix hardware offload match on prefix IP address when userspace
does not send a bitwise expression to represent the prefix.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf.git
Thanks Jakub.
----------------------------------------------------------------
The following changes since commit 90cf87d16bd566cff40c2bc8e32e6d4cd3af23f0:
enetc: Let the hardware auto-advance the taprio base-time of 0 (2020-11-25 12:36:27 -0800)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf.git HEAD
for you to fetch changes up to a5d45bc0dc50f9dd83703510e9804d813a9cac32:
netfilter: nftables_offload: build mask based from the matching bytes (2020-11-27 12:10:47 +0100)
----------------------------------------------------------------
Eric Dumazet (1):
netfilter: ipset: prevent uninit-value in hash_ip6_add
Florian Westphal (1):
netfilter: nf_tables: avoid false-postive lockdep splat
Pablo Neira Ayuso (2):
netfilter: nftables_offload: set address type in control dissector
netfilter: nftables_offload: build mask based from the matching bytes
Wang Hai (1):
ipvs: fix possible memory leak in ip_vs_control_net_init
include/net/netfilter/nf_tables_offload.h | 7 ++++
net/netfilter/ipset/ip_set_core.c | 3 +-
net/netfilter/ipvs/ip_vs_ctl.c | 31 +++++++++++---
net/netfilter/nf_tables_api.c | 3 +-
net/netfilter/nf_tables_offload.c | 17 ++++++++
net/netfilter/nft_cmp.c | 8 ++--
net/netfilter/nft_meta.c | 16 +++----
net/netfilter/nft_payload.c | 70 +++++++++++++++++++++++--------
8 files changed, 117 insertions(+), 38 deletions(-)
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net 0/5] Netfilter fixes for net
2020-11-27 19:03 Pablo Neira Ayuso
@ 2020-11-28 21:23 ` Jakub Kicinski
0 siblings, 0 replies; 27+ messages in thread
From: Jakub Kicinski @ 2020-11-28 21:23 UTC (permalink / raw)
To: Pablo Neira Ayuso; +Cc: netfilter-devel, davem, netdev
On Fri, 27 Nov 2020 20:03:08 +0100 Pablo Neira Ayuso wrote:
> 1) Fix insufficient validation of IPSET_ATTR_IPADDR_IPV6 reported
> by syzbot.
>
> 2) Remove spurious reports on nf_tables when lockdep gets disabled,
> from Florian Westphal.
>
> 3) Fix memleak in the error path of error path of
> ip_vs_control_net_init(), from Wang Hai.
>
> 4) Fix missing control data in flow dissector, otherwise IP address
> matching in hardware offload infra does not work.
>
> 5) Fix hardware offload match on prefix IP address when userspace
> does not send a bitwise expression to represent the prefix.
>
> Please, pull these changes from:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf.git
Pulled, thanks!
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH net 0/5] Netfilter fixes for net
@ 2020-10-31 18:14 Pablo Neira Ayuso
2020-11-01 1:02 ` Jakub Kicinski
0 siblings, 1 reply; 27+ messages in thread
From: Pablo Neira Ayuso @ 2020-10-31 18:14 UTC (permalink / raw)
To: netfilter-devel; +Cc: davem, netdev
Hi,
The following patchset contains Netfilter fixes for net:
1) Incorrect netlink report logic in flowtable and genID.
2) Add a selftest to check that wireguard passes the right sk
to ip_route_me_harder, from Jason A. Donenfeld.
3) Pass the actual sk to ip_route_me_harder(), also from Jason.
4) Missing expression validation of updates via nft --check.
5) Update byte and packet counters regardless of whether they
match, from Stefano Brivio.
Please, pull these changes from:
git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf.git
Thanks.
----------------------------------------------------------------
The following changes since commit 07e0887302450a62f51dba72df6afb5fabb23d1c:
Merge tag 'fallthrough-fixes-clang-5.10-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux (2020-10-29 13:02:52 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf.git HEAD
for you to fetch changes up to 7d10e62c2ff8e084c136c94d32d9a94de4d31248:
netfilter: ipset: Update byte and packet counters regardless of whether they match (2020-10-31 11:11:11 +0100)
----------------------------------------------------------------
Jason A. Donenfeld (2):
wireguard: selftests: check that route_me_harder packets use the right sk
netfilter: use actual socket sk rather than skb sk when routing harder
Pablo Neira Ayuso (2):
netfilter: nftables: fix netlink report logic in flowtable and genid
netfilter: nf_tables: missing validation from the abort path
Stefano Brivio (1):
netfilter: ipset: Update byte and packet counters regardless of whether they match
include/linux/netfilter/nfnetlink.h | 9 ++++++++-
include/linux/netfilter_ipv4.h | 2 +-
include/linux/netfilter_ipv6.h | 10 +++++-----
net/ipv4/netfilter.c | 8 +++++---
net/ipv4/netfilter/iptable_mangle.c | 2 +-
net/ipv4/netfilter/nf_reject_ipv4.c | 2 +-
net/ipv6/netfilter.c | 6 +++---
net/ipv6/netfilter/ip6table_mangle.c | 2 +-
net/netfilter/ipset/ip_set_core.c | 3 ++-
net/netfilter/ipvs/ip_vs_core.c | 4 ++--
net/netfilter/nf_nat_proto.c | 4 ++--
net/netfilter/nf_synproxy_core.c | 2 +-
net/netfilter/nf_tables_api.c | 19 ++++++++++++-------
net/netfilter/nfnetlink.c | 22 ++++++++++++++++++----
net/netfilter/nft_chain_route.c | 4 ++--
net/netfilter/utils.c | 4 ++--
tools/testing/selftests/wireguard/netns.sh | 8 ++++++++
.../testing/selftests/wireguard/qemu/kernel.config | 2 ++
18 files changed, 76 insertions(+), 37 deletions(-)
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH net 0/5] Netfilter fixes for net
2020-10-31 18:14 Pablo Neira Ayuso
@ 2020-11-01 1:02 ` Jakub Kicinski
0 siblings, 0 replies; 27+ messages in thread
From: Jakub Kicinski @ 2020-11-01 1:02 UTC (permalink / raw)
To: Pablo Neira Ayuso; +Cc: netfilter-devel, davem, netdev
On Sat, 31 Oct 2020 19:14:32 +0100 Pablo Neira Ayuso wrote:
> Hi,
>
> The following patchset contains Netfilter fixes for net:
>
> 1) Incorrect netlink report logic in flowtable and genID.
>
> 2) Add a selftest to check that wireguard passes the right sk
> to ip_route_me_harder, from Jason A. Donenfeld.
>
> 3) Pass the actual sk to ip_route_me_harder(), also from Jason.
>
> 4) Missing expression validation of updates via nft --check.
>
> 5) Update byte and packet counters regardless of whether they
> match, from Stefano Brivio.
Pulled, thanks Pablo!
^ permalink raw reply [flat|nested] 27+ messages in thread
end of thread, other threads:[~2025-06-05 13:20 UTC | newest]
Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-05 8:57 [PATCH net 0/5] Netfilter fixes for net Pablo Neira Ayuso
2025-06-05 8:57 ` [PATCH net 1/5] netfilter: nf_set_pipapo_avx2: fix initial map fill Pablo Neira Ayuso
2025-06-05 13:20 ` patchwork-bot+netdevbpf
2025-06-05 8:57 ` [PATCH net 2/5] selftests: netfilter: nft_concat_range.sh: prefer per element counters for testing Pablo Neira Ayuso
2025-06-05 8:57 ` [PATCH net 3/5] selftests: netfilter: nft_concat_range.sh: add datapath check for map fill bug Pablo Neira Ayuso
2025-06-05 8:57 ` [PATCH net 4/5] netfilter: nf_nat: also check reverse tuple to obtain clashing entry Pablo Neira Ayuso
2025-06-05 8:57 ` [PATCH net 5/5] selftests: netfilter: nft_nat.sh: add test for reverse clash with nat Pablo Neira Ayuso
-- strict thread matches above, loose matches on Subject: below --
2024-06-19 17:05 [PATCH net 0/5] Netfilter fixes for net Pablo Neira Ayuso
2024-03-07 2:15 Pablo Neira Ayuso
2024-02-22 0:08 Pablo Neira Ayuso
2023-11-08 15:57 Pablo Neira Ayuso
2023-08-30 23:59 Pablo Neira Ayuso
2023-08-10 7:08 Pablo Neira Ayuso
2023-08-10 7:49 ` Greg KH
2023-08-10 10:29 ` Pablo Neira Ayuso
2023-08-10 17:46 ` Jakub Kicinski
2023-06-06 22:58 Pablo Neira Ayuso
2023-04-18 14:50 Pablo Neira Ayuso
2022-06-21 8:56 Pablo Neira Ayuso
2022-05-31 21:58 Pablo Neira Ayuso
2022-01-20 12:52 Pablo Neira Ayuso
2021-09-29 23:04 Pablo Neira Ayuso
2021-09-03 16:30 Pablo Neira Ayuso
2020-11-27 19:03 Pablo Neira Ayuso
2020-11-28 21:23 ` Jakub Kicinski
2020-10-31 18:14 Pablo Neira Ayuso
2020-11-01 1:02 ` Jakub Kicinski
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).