[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <94bff1bedd0dfa957822a6a303b48eca787f9a21.camel@linux.ibm.com>
Date: Tue, 13 Apr 2021 07:04:11 -0700
From: James Bottomley <jejb@...ux.ibm.com>
To: "Gustavo A. R. Silva" <gustavo@...eddedor.com>,
"Martin K. Petersen" <martin.petersen@...cle.com>,
Kees Cook <keescook@...omium.org>
Cc: "Gustavo A. R. Silva" <gustavoars@...nel.org>,
Adaptec OEM Raid Solutions <aacraid@...rosemi.com>,
linux-scsi@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-hardening@...r.kernel.org
Subject: Re: [PATCH][next] scsi: aacraid: Replace one-element array with
flexible-array member
On Tue, 2021-04-13 at 00:45 -0500, Gustavo A. R. Silva wrote:
> Hi Martin,
>
> On 4/12/21 23:52, Martin K. Petersen wrote:
>
> > Silencing analyzer warnings shouldn't be done at the expense of
> > human
> > readers. If it is imperative to switch to flex_array_size() to
> > quiesce
> > checker warnings, please add a comment in the code explaining that
> > the
> > size evaluates to nseg_new-1 sge_ieee1212 structs.
>
> Done:
>
> https://lore.kernel.org/lkml/20210413054032.GA276102@embeddedor/
I think the reason everyone gets confused is that they think the first
argument should do something. If flex_array_size had been defined
#define flex_array_size(p, count) \
array_size(count, \
sizeof(*(p)) + __must_be_array(p))
Then we could have used
flex_array_size(sge, nseg_new - 1)
or
flex_array_size(rio->sge, nseg_new - 1)
and everyone would have understood either expression. This would also
have been useful, as the first example demonstrates, when we have a
pointer rather than a flexible member ... although that means the macro
likely needs a new name.
However, perhaps just do
array_size(nseg_new - 1, sizeof(*sge));
And lose the comment?
James
Powered by blists - more mailing lists