From: netdev-bot+sashiko@kernel.org
To: pablo@netfilter.org
Cc: netfilter-devel@vger.kernel.org, davem@davemloft.net,
netdev@vger.kernel.org, kuba@kernel.org, pabeni@redhat.com,
edumazet@google.com, horms@kernel.org, fw@strlen.de, ja@ssi.bg
Subject: Re: [PATCH net 8/9] netfilter: ip6_tables: set F_PROTO when proto value is nonzero
Date: Tue, 08 Sep 2026 18:04:04 +0000 [thread overview]
Message-ID: <178889064403.219967.3259522251975828189@kernel.org> (raw)
In-Reply-To: <20260907171732.1407739-9-pablo@netfilter.org>
Thank you for your contribution! Sashiko AI review found 1 potential
issue(s) to consider:
Critical: 0 · High: 0 · Medium: 0 · Low: 1
- [Low] Stale/contradicted UAPI documentation for `struct
ip6t_ip6::proto`.
--
netfilter: ip6_tables: set F_PROTO when proto value is nonzero
This makes the kernel set IP6T_F_PROTO for any rule that carries a nonzero
ipv6.proto, so ip6_packet_match() always performs the protocol comparison
and extension header walk instead of skipping it when userspace left the
flag clear. It mirrors the normalisation already done in nft_compat.c.
> diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c
> index f42fb96ef64b6..313c4aac377aa 100644
> --- a/net/ipv6/netfilter/ip6_tables.c
> +++ b/net/ipv6/netfilter/ip6_tables.c
> @@ -647,6 +647,11 @@ check_entry_size_and_hooks(struct ip6t_entry *e,
> /* Clear counters and comefrom */
> e->counters = ((struct xt_counters) { 0, 0 });
> e->comefrom = 0;
> +
> + /* set F_PROTO, else ip6_packet_match won't do the right thing. */
> + if (e->ipv6.proto)
> + e->ipv6.flags |= IP6T_F_PROTO;
> +
> return 0;
> }
[Severity: Low]
Should the uapi header comment be updated in the same patch? The
description of struct ip6t_ip6::proto in
include/uapi/linux/netfilter_ipv6/ip6_tables.h still documents the
opposite contract:
/* Upper protocol number
* ...
* - You also need to set IP6T_FLAGS_PROTO to "flags" to check protocol.
*/
__u16 proto;
After this change, a non-standard userspace that follows that comment and
sets proto = IPPROTO_TCP while leaving flags = 0 (expecting a
protocol-agnostic rule) gets a protocol-narrowed rule instead, and
ip6_packet_match() now takes the flag-gated branch, including the
ipv6_find_hdr() walk and its *hotdrop = true path when the lookup fails
with _frag_off == 0:
if (ip6info->flags & IP6T_F_PROTO) {
...
protohdr = ipv6_find_hdr(skb, protoff, -1, &_frag_off, NULL);
if (protohdr < 0) {
if (_frag_off == 0)
*hotdrop = true;
Standard ip6tables always sets IP6T_F_PROTO together with -p, so this only
affects hand-crafted rule blobs, and the resulting rule is stricter rather
than unsafe. Still, the field's documented meaning changes here.
While in that comment, IP6T_FLAGS_PROTO does not exist anywhere in the
tree; the macro defined a few lines below is IP6T_F_PROTO. That name is a
pre-existing typo and was not introduced by this patch, but it sits in the
same sentence this change invalidates.
--
Sashiko AI review · https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260907171732.1407739-2-pablo%40netfilter.org
next prev parent reply other threads:[~2026-09-08 18:04 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-07 17:17 [PATCH net,v2 0/9] Netfilter/IPVS fixes for net Pablo Neira Ayuso
2026-09-07 17:17 ` [PATCH net 1/9] ipvs: reject invalid states in connection template sync records Pablo Neira Ayuso
2026-09-08 21:00 ` patchwork-bot+netdevbpf
2026-09-07 17:17 ` [PATCH net 2/9] ipvs: fix reversed sequence option serialization Pablo Neira Ayuso
2026-09-07 17:17 ` [PATCH net 3/9] netfilter: nf_conntrack_sip: fix OOB read in sip_skip_whitespace() Pablo Neira Ayuso
2026-09-07 17:17 ` [PATCH net 4/9] netfilter: cttimeout: prevent UAF during module unload Pablo Neira Ayuso
2026-09-08 18:04 ` netdev-bot+sashiko
2026-09-08 20:24 ` Pablo Neira Ayuso
2026-09-07 17:17 ` [PATCH net 5/9] netfilter: nf_log: unregister loggers before per-net teardown Pablo Neira Ayuso
2026-09-07 17:17 ` [PATCH net 6/9] netfilter: nfnetlink_log: cope with concurrent instance destruction Pablo Neira Ayuso
2026-09-07 17:17 ` [PATCH net 7/9] netfilter: arp_tables: remove the 32bit compat interface Pablo Neira Ayuso
2026-09-08 18:04 ` netdev-bot+sashiko
2026-09-08 20:32 ` Pablo Neira Ayuso
2026-09-07 17:17 ` [PATCH net 8/9] netfilter: ip6_tables: set F_PROTO when proto value is nonzero Pablo Neira Ayuso
2026-09-08 18:04 ` netdev-bot+sashiko [this message]
2026-09-08 20:22 ` Pablo Neira Ayuso
2026-09-08 20:35 ` Pablo Neira Ayuso
2026-09-07 17:17 ` [PATCH net 9/9] netfilter: report NLM_F_DUMP_FILTERED when all is filtered out Pablo Neira Ayuso
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=178889064403.219967.3259522251975828189@kernel.org \
--to=netdev-bot+sashiko@kernel.org \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=fw@strlen.de \
--cc=horms@kernel.org \
--cc=ja@ssi.bg \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=netfilter-devel@vger.kernel.org \
--cc=pabeni@redhat.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.