From: Petr Machata <petrm@nvidia.com>
To: Kees Cook <kees@kernel.org>
Cc: Jakub Kicinski <kuba@kernel.org>,
Andrew Lunn <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Paolo Abeni <pabeni@redhat.com>,
Claudiu Manoil <claudiu.manoil@nxp.com>,
Vladimir Oltean <vladimir.oltean@nxp.com>,
Wei Fang <wei.fang@nxp.com>, Clark Wang <xiaoning.wang@nxp.com>,
Jeroen de Borst <jeroendb@google.com>,
Harshitha Ramamurthy <hramamurthy@google.com>,
Ido Schimmel <idosch@nvidia.com>, Petr Machata <petrm@nvidia.com>,
Maxime Coquelin <mcoquelin.stm32@gmail.com>,
Alexandre Torgue <alexandre.torgue@foss.st.com>,
Simon Horman <horms@kernel.org>,
Geoff Levand <geoff@infradead.org>,
Wolfram Sang <wsa+renesas@sang-engineering.com>,
Alexander Lobakin <aleksander.lobakin@intel.com>,
Praveen Kaligineedi <pkaligineedi@google.com>,
Willem de Bruijn <willemb@google.com>,
"Joshua Washington" <joshwash@google.com>,
Furong Xu <0x1207@gmail.com>,
"Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>,
Jisheng Zhang <jszhang@kernel.org>,
Petr Tesarik <petr@tesarici.cz>, <netdev@vger.kernel.org>,
<imx@lists.linux.dev>, <linux-stm32@st-md-mailman.stormreply.com>,
<linux-arm-kernel@lists.infradead.org>,
Richard Cochran <richardcochran@gmail.com>,
Jacob Keller <jacob.e.keller@intel.com>,
"Shannon Nelson" <shannon.nelson@amd.com>,
Ziwei Xiao <ziweixiao@google.com>,
"Shailend Chand" <shailend@google.com>,
Choong Yong Liang <yong.liang.choong@linux.intel.com>,
Andrew Halaney <ahalaney@redhat.com>,
Kory Maincent <kory.maincent@bootlin.com>,
<linux-kernel@vger.kernel.org>, <linux-hardening@vger.kernel.org>
Subject: Re: [PATCH] net: ethtool: Adjust exactly ETH_GSTRING_LEN-long stats to use memcpy
Date: Wed, 16 Apr 2025 11:09:43 +0200 [thread overview]
Message-ID: <87ecxswjs4.fsf@nvidia.com> (raw)
In-Reply-To: <20250416010210.work.904-kees@kernel.org>
Kees Cook <kees@kernel.org> writes:
> Many drivers populate the stats buffer using C-String based APIs (e.g.
> ethtool_sprintf() and ethtool_puts()), usually when building up the
> list of stats individually (i.e. with a for() loop). This, however,
> requires that the source strings be populated in such a way as to have
> a terminating NUL byte in the source.
>
> Other drivers populate the stats buffer directly using one big memcpy()
> of an entire array of strings. No NUL termination is needed here, as the
> bytes are being directly passed through. Yet others will build up the
> stats buffer individually, but also use memcpy(). This, too, does not
> need NUL termination of the source strings.
>
> However, there are cases where the strings that populate the
> source stats strings are exactly ETH_GSTRING_LEN long, and GCC
> 15's -Wunterminated-string-initialization option complains that the
> trailing NUL byte has been truncated. This situation is fine only if the
> driver is using the memcpy() approach. If the C-String APIs are used,
> the destination string name will have its final byte truncated by the
> required trailing NUL byte applied by the C-string API.
>
> For drivers that are already using memcpy() but have initializers that
> truncate the NUL terminator, mark their source strings as __nonstring to
> silence the GCC warnings.
> Specifically the following warnings were investigated and addressed:
>
> ../drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c:328:24: warning: initializer-string for array of 'char' truncates NUL terminator but destination lacks 'nonstring' attribute (33 chars into 32 available) [-Wunterminated-string-initialization]
> 328 | .str = "a_mac_control_frames_transmitted",
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ../drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c:340:24: warning: initializer-string for array of 'char' truncates NUL terminator but destination lacks 'nonstring' attribute (33 chars into 32 available) [-Wunterminated-string-initialization]
> 340 | .str = "a_pause_mac_ctrl_frames_received",
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
> index 3f64cdbabfa3..0a8fb9c842d3 100644
> --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
> +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c
> @@ -262,7 +262,7 @@ static int mlxsw_sp_port_set_pauseparam(struct net_device *dev,
> }
>
> struct mlxsw_sp_port_hw_stats {
> - char str[ETH_GSTRING_LEN];
> + char str[ETH_GSTRING_LEN] __nonstring;
> u64 (*getter)(const char *payload);
> bool cells_bytes;
> };
Reviewed-by: Petr Machata <petrm@nvidia.com> # for mlxsw
next prev parent reply other threads:[~2025-04-16 9:14 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-16 1:02 [PATCH] net: ethtool: Adjust exactly ETH_GSTRING_LEN-long stats to use memcpy Kees Cook
2025-04-16 9:03 ` Kory Maincent
2025-04-16 17:48 ` Kees Cook
2025-04-16 18:57 ` Keller, Jacob E
2025-04-16 9:09 ` Petr Machata [this message]
2025-04-17 3:15 ` Harshitha Ramamurthy
2025-04-18 2:10 ` patchwork-bot+netdevbpf
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=87ecxswjs4.fsf@nvidia.com \
--to=petrm@nvidia.com \
--cc=0x1207@gmail.com \
--cc=ahalaney@redhat.com \
--cc=aleksander.lobakin@intel.com \
--cc=alexandre.torgue@foss.st.com \
--cc=andrew+netdev@lunn.ch \
--cc=claudiu.manoil@nxp.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=geoff@infradead.org \
--cc=horms@kernel.org \
--cc=hramamurthy@google.com \
--cc=idosch@nvidia.com \
--cc=imx@lists.linux.dev \
--cc=jacob.e.keller@intel.com \
--cc=jeroendb@google.com \
--cc=joshwash@google.com \
--cc=jszhang@kernel.org \
--cc=kees@kernel.org \
--cc=kory.maincent@bootlin.com \
--cc=kuba@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-stm32@st-md-mailman.stormreply.com \
--cc=mcoquelin.stm32@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=petr@tesarici.cz \
--cc=pkaligineedi@google.com \
--cc=richardcochran@gmail.com \
--cc=rmk+kernel@armlinux.org.uk \
--cc=shailend@google.com \
--cc=shannon.nelson@amd.com \
--cc=vladimir.oltean@nxp.com \
--cc=wei.fang@nxp.com \
--cc=willemb@google.com \
--cc=wsa+renesas@sang-engineering.com \
--cc=xiaoning.wang@nxp.com \
--cc=yong.liang.choong@linux.intel.com \
--cc=ziweixiao@google.com \
/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.