From: Sun Jian <sun.jian.kdev@gmail.com>
To: Pablo Neira Ayuso <pablo@netfilter.org>, Florian Westphal <fw@strlen.de>
Cc: Phil Sutter <phil@nwl.cc>, Simon Horman <horms@kernel.org>,
netfilter-devel@vger.kernel.org, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, Sun Jian <sun.jian.kdev@gmail.com>
Subject: [PATCH] netfilter: amanda: fix RCU pointer typing for nf_nat_amanda_hook
Date: Tue, 3 Feb 2026 16:01:09 +0800 [thread overview]
Message-ID: <20260203080109.2682183-1-sun.jian.kdev@gmail.com> (raw)
The nf_nat_amanda_hook pointer is accessed via rcu_dereference(), but
it lacks the __rcu annotation in its declaration and definition. Sparse
reports "incompatible types in comparison expression (different
address spaces)" errors in nf_conntrack_amanda.c.
Fix this by:
1. Adding __rcu and __read_mostly to the global nf_nat_amanda_hook
declaration.
2. Adding __rcu to the global nf_nat_amanda_hook definition.
3. Explicitly declaring the local nf_nat_amanda function pointer
without __rcu to store the dereferenced pointer.
4. Using rcu_dereference_raw() to fetch the hook address, which
satisfies sparse's type checking for function pointers.
Signed-off-by: Sun Jian <sun.jian.kdev@gmail.com>
---
include/linux/netfilter/nf_conntrack_amanda.h | 3 ++-
net/netfilter/nf_conntrack_amanda.c | 11 ++++++++---
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/include/linux/netfilter/nf_conntrack_amanda.h b/include/linux/netfilter/nf_conntrack_amanda.h
index 6f0ac896fcc9..edf1d30135a3 100644
--- a/include/linux/netfilter/nf_conntrack_amanda.h
+++ b/include/linux/netfilter/nf_conntrack_amanda.h
@@ -12,5 +12,6 @@ extern unsigned int (*nf_nat_amanda_hook)(struct sk_buff *skb,
unsigned int protoff,
unsigned int matchoff,
unsigned int matchlen,
- struct nf_conntrack_expect *exp);
+ struct nf_conntrack_expect *exp)
+ __rcu __read_mostly;
#endif /* _NF_CONNTRACK_AMANDA_H */
diff --git a/net/netfilter/nf_conntrack_amanda.c b/net/netfilter/nf_conntrack_amanda.c
index 7be4c35e4795..7b3fffea45da 100644
--- a/net/netfilter/nf_conntrack_amanda.c
+++ b/net/netfilter/nf_conntrack_amanda.c
@@ -43,7 +43,7 @@ unsigned int (*nf_nat_amanda_hook)(struct sk_buff *skb,
unsigned int matchoff,
unsigned int matchlen,
struct nf_conntrack_expect *exp)
- __read_mostly;
+ __rcu __read_mostly;
EXPORT_SYMBOL_GPL(nf_nat_amanda_hook);
enum amanda_strings {
@@ -98,7 +98,12 @@ static int amanda_help(struct sk_buff *skb,
u_int16_t len;
__be16 port;
int ret = NF_ACCEPT;
- typeof(nf_nat_amanda_hook) nf_nat_amanda;
+ unsigned int (*nf_nat_amanda)(struct sk_buff *skb,
+ enum ip_conntrack_info ctinfo,
+ unsigned int protoff,
+ unsigned int matchoff,
+ unsigned int matchlen,
+ struct nf_conntrack_expect *exp);
/* Only look at packets from the Amanda server */
if (CTINFO2DIR(ctinfo) == IP_CT_DIR_ORIGINAL)
@@ -155,7 +160,7 @@ static int amanda_help(struct sk_buff *skb,
&tuple->src.u3, &tuple->dst.u3,
IPPROTO_TCP, NULL, &port);
- nf_nat_amanda = rcu_dereference(nf_nat_amanda_hook);
+ nf_nat_amanda = rcu_dereference_raw(nf_nat_amanda_hook);
if (nf_nat_amanda && ct->status & IPS_NAT_MASK)
ret = nf_nat_amanda(skb, ctinfo, protoff,
off - dataoff, len, exp);
--
2.43.0
next reply other threads:[~2026-02-03 8:01 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-03 8:01 Sun Jian [this message]
2026-02-03 13:50 ` [PATCH] netfilter: amanda: fix RCU pointer typing for nf_nat_amanda_hook Florian Westphal
2026-02-03 14:36 ` sun jian
2026-02-03 14:55 ` [PATCH v2] " Sun Jian
2026-02-03 15:03 ` Florian Westphal
2026-02-03 16:19 ` sun jian
2026-02-03 16:59 ` Florian Westphal
2026-02-04 1:56 ` sun jian
2026-02-04 2:31 ` sun jian
2026-02-04 12:24 ` Florian Westphal
2026-02-04 14:49 ` sun jian
2026-02-04 15:38 ` [PATCH v4 0/5] netfilter: annotate NAT helper hook pointers with __rcu Sun Jian
2026-02-04 15:38 ` [PATCH v4 1/5] netfilter: amanda: annotate nf_nat_amanda_hook " Sun Jian
2026-02-04 15:38 ` [PATCH v4 2/5] netfilter: ftp: annotate nf_nat_ftp_hook " Sun Jian
2026-02-05 10:00 ` Florian Westphal
2026-02-05 12:23 ` sun jian
2026-02-05 12:30 ` [PATCH v5] netfilter: annotate NAT helper hook pointers " Sun Jian
2026-02-04 15:38 ` [PATCH v4 3/5] netfilter: irc: annotate nf_nat_irc_hook " Sun Jian
2026-02-04 15:38 ` [PATCH v4 4/5] netfilter: snmp: annotate nf_nat_snmp_hook " Sun Jian
2026-02-04 15:38 ` [PATCH v4 5/5] netfilter: tftp: annotate nf_nat_tftp_hook " Sun Jian
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=20260203080109.2682183-1-sun.jian.kdev@gmail.com \
--to=sun.jian.kdev@gmail.com \
--cc=fw@strlen.de \
--cc=horms@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=netfilter-devel@vger.kernel.org \
--cc=pablo@netfilter.org \
--cc=phil@nwl.cc \
/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.