From: Kees Cook <keescook@chromium.org>
To: Vincent MAILHOL <mailhol.vincent@wanadoo.fr>
Cc: "David S. Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>, Andrew Lunn <andrew@lunn.ch>,
kernel test robot <lkp@intel.com>,
Oleksij Rempel <linux@rempel-privat.de>,
Sean Anderson <sean.anderson@seco.com>,
Alexandru Tachici <alexandru.tachici@analog.com>,
Amit Cohen <amcohen@nvidia.com>,
"Gustavo A. R. Silva" <gustavoars@kernel.org>,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-hardening@vger.kernel.org
Subject: Re: [PATCH v2] ethtool: Replace 0-length array with flexible array
Date: Thu, 5 Jan 2023 20:22:17 -0800 [thread overview]
Message-ID: <202301052021.5AEF89CB@keescook> (raw)
In-Reply-To: <CAMZ6RqK96DNAPO5A32i3EaDErU0C2RDtL4-JN2O8A5RBBUo3ew@mail.gmail.com>
On Fri, Jan 06, 2023 at 09:55:30AM +0900, Vincent MAILHOL wrote:
> On Fri. 6 Jan 2023 at 08:34, Kees Cook <keescook@chromium.org> wrote:
> > Zero-length arrays are deprecated[1]. Replace struct ethtool_rxnfc's
> > "rule_locs" 0-length array with a flexible array. Detected with GCC 13,
> > using -fstrict-flex-arrays=3:
> >
> > net/ethtool/common.c: In function 'ethtool_get_max_rxnfc_channel':
> > net/ethtool/common.c:558:55: warning: array subscript i is outside array bounds of '__u32[0]' {aka 'unsigned int[]'} [-Warray-bounds=]
> > 558 | .fs.location = info->rule_locs[i],
> > | ~~~~~~~~~~~~~~~^~~
> > In file included from include/linux/ethtool.h:19,
> > from include/uapi/linux/ethtool_netlink.h:12,
> > from include/linux/ethtool_netlink.h:6,
> > from net/ethtool/common.c:3:
> > include/uapi/linux/ethtool.h:1186:41: note: while referencing
> > 'rule_locs'
> > 1186 | __u32 rule_locs[0];
> > | ^~~~~~~~~
> >
> > [1] https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays
> >
> > Cc: "David S. Miller" <davem@davemloft.net>
> > Cc: Jakub Kicinski <kuba@kernel.org>
> > Cc: Andrew Lunn <andrew@lunn.ch>
> > Cc: kernel test robot <lkp@intel.com>
> > Cc: Oleksij Rempel <linux@rempel-privat.de>
> > Cc: Sean Anderson <sean.anderson@seco.com>
> > Cc: Alexandru Tachici <alexandru.tachici@analog.com>
> > Cc: Amit Cohen <amcohen@nvidia.com>
> > Cc: "Gustavo A. R. Silva" <gustavoars@kernel.org>
> > Cc: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
> > Cc: netdev@vger.kernel.org
> > Signed-off-by: Kees Cook <keescook@chromium.org>
> > ---
> > v2: resend, this time without missing netdev CC. :)
> > ---
> > include/uapi/linux/ethtool.h | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h
> > index 58e587ba0450..9b97b3e0ec1f 100644
> > --- a/include/uapi/linux/ethtool.h
> > +++ b/include/uapi/linux/ethtool.h
> > @@ -1183,7 +1183,7 @@ struct ethtool_rxnfc {
> > __u32 rule_cnt;
> > __u32 rss_context;
> > };
> > - __u32 rule_locs[0];
> > + __DECLARE_FLEX_ARRAY(__u32, rule_locs);
>
> Can't this simply be a C99 flexible array member?
>
> __u32 rule_locs[];
>
> As far as I understand, __DECLARE_FLEX_ARRAY() is a hack to allow the
> declaration of a flexible array within unions (which otherwise do not
> accept flexible array members). However, ethtool_rxnfc being a struct,
> I do not see the need for __DECLARE_FLEX_ARRAY() here.
Good point -- I think my eyes scanned through the "union" above and I
just jumped at using __DECLARE_FLEX_ARRAY. I'll send a v2. Thanks!
--
Kees Cook
prev parent reply other threads:[~2023-01-06 4:22 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-05 23:34 [PATCH v2] ethtool: Replace 0-length array with flexible array Kees Cook
2023-01-06 0:55 ` Vincent MAILHOL
2023-01-06 4:22 ` Kees Cook [this message]
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=202301052021.5AEF89CB@keescook \
--to=keescook@chromium.org \
--cc=alexandru.tachici@analog.com \
--cc=amcohen@nvidia.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=gustavoars@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@rempel-privat.de \
--cc=lkp@intel.com \
--cc=mailhol.vincent@wanadoo.fr \
--cc=netdev@vger.kernel.org \
--cc=sean.anderson@seco.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.