From: Kees Cook <kees@kernel.org>
To: Kory Maincent <kory.maincent@bootlin.com>
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>,
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 10:48:45 -0700 [thread overview]
Message-ID: <202504161047.79ED8EF5@keescook> (raw)
In-Reply-To: <20250416110351.1dbb7173@kmaincent-XPS-13-7390>
On Wed, Apr 16, 2025 at 11:03:51AM +0200, Kory Maincent wrote:
> On Tue, 15 Apr 2025 18:02:15 -0700
> Kees Cook <kees@kernel.org> wrote:
>
> > 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.
>
> Shouldn't we move on to ethtool_cpy in these drivers too to unify the code?
I decided that the code churn wasn't worth it. Perhaps in a follow-up
patch if folks want to see the removal of the explicit memcpy() uses?
--
Kees Cook
next prev parent reply other threads:[~2025-04-16 17:48 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 [this message]
2025-04-16 18:57 ` Keller, Jacob E
2025-04-16 9:09 ` Petr Machata
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=202504161047.79ED8EF5@keescook \
--to=kees@kernel.org \
--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=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=petrm@nvidia.com \
--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.