Message ID | 20230105215706.never.027-kees@kernel.org (mailing list archive) |
---|---|
State | Mainlined |
Commit | b5fc3ca3954fd0382bb576a5a295c03a089ac7e3 |
Headers | show |
Series | ARM: ixp4xx: Replace 0-length arrays with flexible arrays | expand |
On Thu, Jan 5, 2023 at 10:57 PM Kees Cook <keescook@chromium.org> wrote: > Zero-length arrays are deprecated[1]. Replace npe_load_firmware's > union of 0-length arrays with flexible arrays. Detected with GCC 13, > using -fstrict-flex-arrays=3: > > drivers/soc/ixp4xx/ixp4xx-npe.c: In function 'npe_load_firmware': > drivers/soc/ixp4xx/ixp4xx-npe.c:570:60: warning: array subscript i is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds=] > 570 | image->data[i] = swab32(image->data[i]); > include/uapi/linux/swab.h:115:54: note: in definition of macro '__swab32' > 115 | #define __swab32(x) (__u32)__builtin_bswap32((__u32)(x)) > | ^ > drivers/soc/ixp4xx/ixp4xx-npe.c:570:42: note: in expansion of macro 'swab32' > 570 | image->data[i] = swab32(image->data[i]); > | ^~~~~~ > drivers/soc/ixp4xx/ixp4xx-npe.c:522:29: note: while referencing 'data' > 522 | u32 data[0]; > | ^~~~ > > [1] https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays > > Cc: Krzysztof Halasa <khalasa@piap.pl> > Cc: Linus Walleij <linus.walleij@linaro.org> > Cc: Arnd Bergmann <arnd@arndb.de> > Cc: "Gustavo A. R. Silva" <gustavoars@kernel.org> > Cc: linux-arm-kernel@lists.infradead.org > Signed-off-by: Kees Cook <keescook@chromium.org> Looks good to me: Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Do you need me to funnel this to the SoC tree or do you have some quickpath for fixes like this? Yours, Linus Walleij
On Sun, Jan 08, 2023 at 12:58:37AM +0100, Linus Walleij wrote: > On Thu, Jan 5, 2023 at 10:57 PM Kees Cook <keescook@chromium.org> wrote: > > > Zero-length arrays are deprecated[1]. Replace npe_load_firmware's > > union of 0-length arrays with flexible arrays. Detected with GCC 13, > > using -fstrict-flex-arrays=3: > > > > drivers/soc/ixp4xx/ixp4xx-npe.c: In function 'npe_load_firmware': > > drivers/soc/ixp4xx/ixp4xx-npe.c:570:60: warning: array subscript i is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds=] > > 570 | image->data[i] = swab32(image->data[i]); > > include/uapi/linux/swab.h:115:54: note: in definition of macro '__swab32' > > 115 | #define __swab32(x) (__u32)__builtin_bswap32((__u32)(x)) > > | ^ > > drivers/soc/ixp4xx/ixp4xx-npe.c:570:42: note: in expansion of macro 'swab32' > > 570 | image->data[i] = swab32(image->data[i]); > > | ^~~~~~ > > drivers/soc/ixp4xx/ixp4xx-npe.c:522:29: note: while referencing 'data' > > 522 | u32 data[0]; > > | ^~~~ > > > > [1] https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays > > > > Cc: Krzysztof Halasa <khalasa@piap.pl> > > Cc: Linus Walleij <linus.walleij@linaro.org> > > Cc: Arnd Bergmann <arnd@arndb.de> > > Cc: "Gustavo A. R. Silva" <gustavoars@kernel.org> > > Cc: linux-arm-kernel@lists.infradead.org > > Signed-off-by: Kees Cook <keescook@chromium.org> > > Looks good to me: > Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Thanks! > Do you need me to funnel this to the SoC tree or do you have > some quickpath for fixes like this? I'll take it via my tree if unless you'd rather it go through yours. Most maintainers take these directly, but some don't want to. I'm flexible! :)
On Thu, Jan 12, 2023 at 11:54 PM Kees Cook <keescook@chromium.org> wrote: > On Sun, Jan 08, 2023 at 12:58:37AM +0100, Linus Walleij wrote: > > On Thu, Jan 5, 2023 at 10:57 PM Kees Cook <keescook@chromium.org> wrote: > > > > > Zero-length arrays are deprecated[1]. Replace npe_load_firmware's > > > union of 0-length arrays with flexible arrays. Detected with GCC 13, > > > using -fstrict-flex-arrays=3: > > > > > > drivers/soc/ixp4xx/ixp4xx-npe.c: In function 'npe_load_firmware': > > > drivers/soc/ixp4xx/ixp4xx-npe.c:570:60: warning: array subscript i is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds=] > > > 570 | image->data[i] = swab32(image->data[i]); > > > include/uapi/linux/swab.h:115:54: note: in definition of macro '__swab32' > > > 115 | #define __swab32(x) (__u32)__builtin_bswap32((__u32)(x)) > > > | ^ > > > drivers/soc/ixp4xx/ixp4xx-npe.c:570:42: note: in expansion of macro 'swab32' > > > 570 | image->data[i] = swab32(image->data[i]); > > > | ^~~~~~ > > > drivers/soc/ixp4xx/ixp4xx-npe.c:522:29: note: while referencing 'data' > > > 522 | u32 data[0]; > > > | ^~~~ > > > > > > [1] https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays > > > > > > Cc: Krzysztof Halasa <khalasa@piap.pl> > > > Cc: Linus Walleij <linus.walleij@linaro.org> > > > Cc: Arnd Bergmann <arnd@arndb.de> > > > Cc: "Gustavo A. R. Silva" <gustavoars@kernel.org> > > > Cc: linux-arm-kernel@lists.infradead.org > > > Signed-off-by: Kees Cook <keescook@chromium.org> > > > > Looks good to me: > > Reviewed-by: Linus Walleij <linus.walleij@linaro.org> > > Thanks! > > > Do you need me to funnel this to the SoC tree or do you have > > some quickpath for fixes like this? > > I'll take it via my tree if unless you'd rather it go through yours. > Most maintainers take these directly, but some don't want to. I'm > flexible! :) Just pick it into your tree, the IXP4xx is low activity and I do not submit new material every merge window, so this is easiest. Thanks! Linus Walleij
diff --git a/drivers/soc/ixp4xx/ixp4xx-npe.c b/drivers/soc/ixp4xx/ixp4xx-npe.c index 58240e320c13..5be9988f30ce 100644 --- a/drivers/soc/ixp4xx/ixp4xx-npe.c +++ b/drivers/soc/ixp4xx/ixp4xx-npe.c @@ -519,15 +519,15 @@ int npe_load_firmware(struct npe *npe, const char *name, struct device *dev) u32 id; u32 size; union { - u32 data[0]; - struct dl_block blocks[0]; + DECLARE_FLEX_ARRAY(u32, data); + DECLARE_FLEX_ARRAY(struct dl_block, blocks); }; } *image; struct dl_codeblock { u32 npe_addr; u32 size; - u32 data[0]; + u32 data[]; } *cb; int i, j, err, data_size, instr_size, blocks, table_end;
Zero-length arrays are deprecated[1]. Replace npe_load_firmware's union of 0-length arrays with flexible arrays. Detected with GCC 13, using -fstrict-flex-arrays=3: drivers/soc/ixp4xx/ixp4xx-npe.c: In function 'npe_load_firmware': drivers/soc/ixp4xx/ixp4xx-npe.c:570:60: warning: array subscript i is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds=] 570 | image->data[i] = swab32(image->data[i]); include/uapi/linux/swab.h:115:54: note: in definition of macro '__swab32' 115 | #define __swab32(x) (__u32)__builtin_bswap32((__u32)(x)) | ^ drivers/soc/ixp4xx/ixp4xx-npe.c:570:42: note: in expansion of macro 'swab32' 570 | image->data[i] = swab32(image->data[i]); | ^~~~~~ drivers/soc/ixp4xx/ixp4xx-npe.c:522:29: note: while referencing 'data' 522 | u32 data[0]; | ^~~~ [1] https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays Cc: Krzysztof Halasa <khalasa@piap.pl> Cc: Linus Walleij <linus.walleij@linaro.org> Cc: Arnd Bergmann <arnd@arndb.de> Cc: "Gustavo A. R. Silva" <gustavoars@kernel.org> Cc: linux-arm-kernel@lists.infradead.org Signed-off-by: Kees Cook <keescook@chromium.org> --- drivers/soc/ixp4xx/ixp4xx-npe.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)