[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20250227180913.6248bbd3@kernel.org>
Date: Thu, 27 Feb 2025 18:09:13 -0800
From: Jakub Kicinski <kuba@...nel.org>
To: Eric Woudstra <ericwouds@...il.com>
Cc: Andrew Lunn <andrew+netdev@...n.ch>, "David S. Miller"
<davem@...emloft.net>, Eric Dumazet <edumazet@...gle.com>, Paolo Abeni
<pabeni@...hat.com>, Simon Horman <horms@...nel.org>, Pablo Neira Ayuso
<pablo@...filter.org>, Jozsef Kadlecsik <kadlec@...filter.org>, Jiri Pirko
<jiri@...nulli.us>, Ivan Vecera <ivecera@...hat.com>, Roopa Prabhu
<roopa@...dia.com>, Nikolay Aleksandrov <razor@...ckwall.org>, Matthias
Brugger <matthias.bgg@...il.com>, AngeloGioacchino Del Regno
<angelogioacchino.delregno@...labora.com>, Kuniyuki Iwashima
<kuniyu@...zon.com>, Sebastian Andrzej Siewior <bigeasy@...utronix.de>, Joe
Damato <jdamato@...tly.com>, Alexander Lobakin
<aleksander.lobakin@...el.com>, Vladimir Oltean <olteanv@...il.com>, "Frank
Wunderlich" <frank-w@...lic-files.de>, Daniel Golle
<daniel@...rotopia.org>, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org, netfilter-devel@...r.kernel.org,
coreteam@...filter.org, bridge@...ts.linux.dev,
linux-arm-kernel@...ts.infradead.org, linux-mediatek@...ts.infradead.org
Subject: Re: [PATCH v7 net-next 03/14] netfilter: bridge: Add conntrack
double vlan and pppoe
On Tue, 25 Feb 2025 21:16:05 +0100 Eric Woudstra wrote:
> + struct ppp_hdr {
> + struct pppoe_hdr hdr;
> + __be16 proto;
> + } *ph;
W=1 C=1 GCC build gives us:
net/bridge/netfilter/nf_conntrack_bridge.c: note: in included file (through ../include/linux/if_pppox.h, ../include/uapi/linux/netfilter_bridge.h, ../include/linux/netfilter_bridge.h):
include/uapi/linux/if_pppox.h:153:29: warning: array of flexible structures
I'm guessing it doesn't like that hdr has a zero-length array which
overlaps proto.
Looks like kernel code doesn't current need those arrays.
Could you submit something like the diff below first, and then rebase on top?
CC hardening folks on the submission.
diff --git a/drivers/net/ppp/pppoe.c b/drivers/net/ppp/pppoe.c
index 2ea4f4890d23..3a800af4e987 100644
--- a/drivers/net/ppp/pppoe.c
+++ b/drivers/net/ppp/pppoe.c
@@ -881,7 +881,7 @@ static int pppoe_sendmsg(struct socket *sock, struct msghdr *m,
skb->protocol = cpu_to_be16(ETH_P_PPP_SES);
ph = skb_put(skb, total_len + sizeof(struct pppoe_hdr));
- start = (char *)&ph->tag[0];
+ start = (char *)ph + sizeof(*ph);
error = memcpy_from_msg(start, m, total_len);
if (error < 0) {
diff --git a/include/uapi/linux/if_pppox.h b/include/uapi/linux/if_pppox.h
index 9abd80dcc46f..29b804aa7474 100644
--- a/include/uapi/linux/if_pppox.h
+++ b/include/uapi/linux/if_pppox.h
@@ -122,7 +122,9 @@ struct sockaddr_pppol2tpv3in6 {
struct pppoe_tag {
__be16 tag_type;
__be16 tag_len;
+#ifndef __KERNEL__
char tag_data[];
+#endif
} __attribute__ ((packed));
/* Tag identifiers */
@@ -150,7 +152,9 @@ struct pppoe_hdr {
__u8 code;
__be16 sid;
__be16 length;
+#ifndef __KERNEL__
struct pppoe_tag tag[];
+#endif
} __packed;
/* Length of entire PPPoE + PPP header */
--
pw-bot: cr
Powered by blists - more mailing lists