All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Laight <David.Laight@ACULAB.COM>
To: "'Gustavo A. R. Silva'" <gustavo@embeddedor.com>,
	"'Gustavo A. R. Silva'" <gustavoars@kernel.org>,
	"J. Bruce Fields" <bfields@fieldses.org>,
	"Chuck Lever" <chuck.lever@oracle.com>
Cc: "linux-nfs@vger.kernel.org" <linux-nfs@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-hardening@vger.kernel.org"
	<linux-hardening@vger.kernel.org>
Subject: RE: [PATCH][next] UAPI: nfsfh.h: Replace one-element array with flexible-array member
Date: Fri, 26 Mar 2021 08:17:13 +0000	[thread overview]
Message-ID: <e516146427db45439c02afe57ce06e97@AcuMS.aculab.com> (raw)
In-Reply-To: <e2e93993-e64b-ce7d-88cf-4c367b747e40@embeddedor.com>

From: Gustavo A. R. Silva
> Sent: 25 March 2021 21:12
> 
> On 3/25/21 10:29, David Laight wrote:
> 
> >>>
> >>> Could you use the simpler:
> >>>> struct nfs_fhbase_new {
> >>>>          __u8       fb_version;
> >>>>          __u8       fb_auth_type;
> >>>>          __u8       fb_fsid_type;
> >>>>          __u8       fb_fileid_type;
> >>>>          union {
> >>>>                 __u32      fb_auth[1];
> >>>>                 __u32      fb_auth_flex[0];
> >>>>          };
> >>>> };
> >>>
> >>> Although I'm not certain flexible arrays are supported
> >>> as the last element of a union.
> >>
> >> Nope; this is not allowed: https://godbolt.org/z/14vd4o8na
> >
> > Nothing an extra 'struct {__u32 fb_auth_flex[0]; }'; won't solve.
> 
> We don't want to introduce zero-length arrays [1].

I probably meant to write [] not [0] - doesn't affect the idea.

The real problem is that the compiler is likely to start rejecting
references to a flex array that go beyond the end of the outer
structure.

Thinking back, isn't fb_auth[] at least one entry long?
So it could be:

struct nfs_fhbase_new {
         __u8       fb_version;
         __u8       fb_auth_type;
         __u8       fb_fsid_type;
         __u8       fb_fileid_type;
         __u32      fb_auth[1];
         __u32      fb_auth_extra[];
};

(I've missed the 0 out this time...)

	David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)

  reply	other threads:[~2021-03-26  8:18 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-23 22:48 [PATCH][next] UAPI: nfsfh.h: Replace one-element array with flexible-array member Gustavo A. R. Silva
2021-03-25 13:45 ` David Laight
2021-03-25 13:18   ` Gustavo A. R. Silva
2021-03-25 15:29     ` David Laight
2021-03-25 21:12       ` Gustavo A. R. Silva
2021-03-26  8:17         ` David Laight [this message]
2021-03-26 14:10           ` Gustavo A. R. Silva
2021-03-29 14:57 ` Chuck Lever
2021-03-29 14:51   ` Gustavo A. R. Silva

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=e516146427db45439c02afe57ce06e97@AcuMS.aculab.com \
    --to=david.laight@aculab.com \
    --cc=bfields@fieldses.org \
    --cc=chuck.lever@oracle.com \
    --cc=gustavo@embeddedor.com \
    --cc=gustavoars@kernel.org \
    --cc=linux-hardening@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nfs@vger.kernel.org \
    /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.