2018-03-08 21:39:59

by Stephen Kitt

[permalink] [raw]
Subject: [PATCH] bfa: remove VLA

In preparation to enabling -Wvla, remove VLAs and replace them with
fixed-length arrays instead.

bfad_bsg.c uses a variable-length array declaration to measure the
size of a putative array; this can be replaced by the product of the
size of an element and the number of elements, avoiding the VLA
altogether.

This was prompted by https://lkml.org/lkml/2018/3/7/621

Signed-off-by: Stephen Kitt <[email protected]>
---
drivers/scsi/bfa/bfad_bsg.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/scsi/bfa/bfad_bsg.c b/drivers/scsi/bfa/bfad_bsg.c
index 3976e787ba64..7c884f881180 100644
--- a/drivers/scsi/bfa/bfad_bsg.c
+++ b/drivers/scsi/bfa/bfad_bsg.c
@@ -891,7 +891,7 @@ bfad_iocmd_fabric_get_lports(struct bfad_s *bfad, void *cmd,

if (bfad_chk_iocmd_sz(payload_len,
sizeof(struct bfa_bsg_fabric_get_lports_s),
- sizeof(wwn_t[iocmd->nports])) != BFA_STATUS_OK) {
+ sizeof(wwn_t) * iocmd->nports) != BFA_STATUS_OK) {
iocmd->status = BFA_STATUS_VERSION_FAIL;
goto out;
}
--
2.11.0



2018-03-08 21:44:16

by Kees Cook

[permalink] [raw]
Subject: Re: [PATCH] bfa: remove VLA

On Thu, Mar 8, 2018 at 1:38 PM, Stephen Kitt <[email protected]> wrote:
> In preparation to enabling -Wvla, remove VLAs and replace them with
> fixed-length arrays instead.
>
> bfad_bsg.c uses a variable-length array declaration to measure the
> size of a putative array; this can be replaced by the product of the
> size of an element and the number of elements, avoiding the VLA
> altogether.
>
> This was prompted by https://lkml.org/lkml/2018/3/7/621
>
> Signed-off-by: Stephen Kitt <[email protected]>

Reviewed-by: Kees Cook <[email protected]>

-Kees

> ---
> drivers/scsi/bfa/bfad_bsg.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/scsi/bfa/bfad_bsg.c b/drivers/scsi/bfa/bfad_bsg.c
> index 3976e787ba64..7c884f881180 100644
> --- a/drivers/scsi/bfa/bfad_bsg.c
> +++ b/drivers/scsi/bfa/bfad_bsg.c
> @@ -891,7 +891,7 @@ bfad_iocmd_fabric_get_lports(struct bfad_s *bfad, void *cmd,
>
> if (bfad_chk_iocmd_sz(payload_len,
> sizeof(struct bfa_bsg_fabric_get_lports_s),
> - sizeof(wwn_t[iocmd->nports])) != BFA_STATUS_OK) {
> + sizeof(wwn_t) * iocmd->nports) != BFA_STATUS_OK) {
> iocmd->status = BFA_STATUS_VERSION_FAIL;
> goto out;
> }
> --
> 2.11.0
>



--
Kees Cook
Pixel Security

2018-03-09 22:17:17

by Stephen Kitt

[permalink] [raw]
Subject: Re: [PATCH] bfa: remove VLA

Hi,

I sent this to the wrong maintainers, sorry — you’ll find the original patch
on https://patchwork.kernel.org/patch/10269257/

Regards,

Stephen


On Thu, 8 Mar 2018 13:43:07 -0800, Kees Cook <[email protected]> wrote:
> On Thu, Mar 8, 2018 at 1:38 PM, Stephen Kitt <[email protected]> wrote:
> > In preparation to enabling -Wvla, remove VLAs and replace them with
> > fixed-length arrays instead.
> >
> > bfad_bsg.c uses a variable-length array declaration to measure the
> > size of a putative array; this can be replaced by the product of the
> > size of an element and the number of elements, avoiding the VLA
> > altogether.
> >
> > This was prompted by https://lkml.org/lkml/2018/3/7/621
> >
> > Signed-off-by: Stephen Kitt <[email protected]>
>
> Reviewed-by: Kees Cook <[email protected]>
>
> -Kees
>
> > ---
> > drivers/scsi/bfa/bfad_bsg.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/scsi/bfa/bfad_bsg.c b/drivers/scsi/bfa/bfad_bsg.c
> > index 3976e787ba64..7c884f881180 100644
> > --- a/drivers/scsi/bfa/bfad_bsg.c
> > +++ b/drivers/scsi/bfa/bfad_bsg.c
> > @@ -891,7 +891,7 @@ bfad_iocmd_fabric_get_lports(struct bfad_s *bfad,
> > void *cmd,
> >
> > if (bfad_chk_iocmd_sz(payload_len,
> > sizeof(struct bfa_bsg_fabric_get_lports_s),
> > - sizeof(wwn_t[iocmd->nports])) != BFA_STATUS_OK) {
> > + sizeof(wwn_t) * iocmd->nports) != BFA_STATUS_OK) {
> > iocmd->status = BFA_STATUS_VERSION_FAIL;
> > goto out;
> > }
> > --
> > 2.11.0
> >
>
>
>
> --
> Kees Cook
> Pixel Security


Attachments:
(No filename) (849.00 B)
OpenPGP digital signature

2018-03-15 04:38:59

by Martin K. Petersen

[permalink] [raw]
Subject: Re: [PATCH] bfa: remove VLA


Stephen,

> bfad_bsg.c uses a variable-length array declaration to measure the
> size of a putative array; this can be replaced by the product of the
> size of an element and the number of elements, avoiding the VLA
> altogether.
>
> - sizeof(wwn_t[iocmd->nports])) != BFA_STATUS_OK) {
> + sizeof(wwn_t) * iocmd->nports) != BFA_STATUS_OK) {

These parentheses made me blurry eyed but it's actually OK.

Applied to 4.17/scsi-queue.

--
Martin K. Petersen Oracle Linux Engineering

2018-03-15 11:41:49

by David Laight

[permalink] [raw]
Subject: RE: [PATCH] bfa: remove VLA

> > - sizeof(wwn_t[iocmd->nports])) != BFA_STATUS_OK) {
> > + sizeof(wwn_t) * iocmd->nports) != BFA_STATUS_OK) {
>
> These parentheses made me blurry eyed but it's actually OK.

iocmd->nports * sizeof(wwn_t)) != BFA_STATUS_OK) {

is easier to focus on :-)

David