linux-spi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH][next] spi: spi-s3c24xx: Replace zero-length array with flexible-array member
@ 2020-03-20 23:25 Gustavo A. R. Silva
  2020-03-22 20:46 ` Andi Shyti
  2020-03-23 18:37 ` Applied "spi: spi-s3c24xx: Replace zero-length array with flexible-array member" to the spi tree Mark Brown
  0 siblings, 2 replies; 3+ messages in thread
From: Gustavo A. R. Silva @ 2020-03-20 23:25 UTC (permalink / raw)
  To: Kukjin Kim, Krzysztof Kozlowski, Andi Shyti, Mark Brown
  Cc: linux-arm-kernel, linux-samsung-soc, linux-spi, linux-kernel,
	Gustavo A. R. Silva

The current codebase makes use of the zero-length array language
extension to the C90 standard, but the preferred mechanism to declare
variable-length types such as these ones is a flexible array member[1][2],
introduced in C99:

struct foo {
        int stuff;
        struct boo array[];
};

By making use of the mechanism above, we will get a compiler warning
in case the flexible array does not occur last in the structure, which
will help us prevent some kind of undefined behavior bugs from being
inadvertently introduced[3] to the codebase from now on.

Also, notice that, dynamic memory allocations won't be affected by
this change:

"Flexible array members have incomplete type, and so the sizeof operator
may not be applied. As a quirk of the original implementation of
zero-length arrays, sizeof evaluates to zero."[1]

This issue was found with the help of Coccinelle.

[1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html
[2] https://github.com/KSPP/linux/issues/21
[3] commit 76497732932f ("cxgb3/l2t: Fix undefined behaviour")

Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
---
 drivers/spi/spi-s3c24xx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/spi/spi-s3c24xx.c b/drivers/spi/spi-s3c24xx.c
index 2d6e37f25e2d..2cb3b611c294 100644
--- a/drivers/spi/spi-s3c24xx.c
+++ b/drivers/spi/spi-s3c24xx.c
@@ -227,7 +227,7 @@ static inline unsigned int hw_txbyte(struct s3c24xx_spi *hw, int count)
 struct spi_fiq_code {
 	u32	length;
 	u32	ack_offset;
-	u8	data[0];
+	u8	data[];
 };
 
 extern struct spi_fiq_code s3c24xx_spi_fiq_txrx;
-- 
2.23.0

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH][next] spi: spi-s3c24xx: Replace zero-length array with flexible-array member
  2020-03-20 23:25 [PATCH][next] spi: spi-s3c24xx: Replace zero-length array with flexible-array member Gustavo A. R. Silva
@ 2020-03-22 20:46 ` Andi Shyti
  2020-03-23 18:37 ` Applied "spi: spi-s3c24xx: Replace zero-length array with flexible-array member" to the spi tree Mark Brown
  1 sibling, 0 replies; 3+ messages in thread
From: Andi Shyti @ 2020-03-22 20:46 UTC (permalink / raw)
  To: Gustavo A. R. Silva
  Cc: linux-samsung-soc, linux-kernel, Krzysztof Kozlowski, linux-spi,
	Mark Brown, Kukjin Kim, Andi Shyti, linux-arm-kernel

Hi Gustavo,

On Fri, Mar 20, 2020 at 06:25:56PM -0500, Gustavo A. R. Silva wrote:
> The current codebase makes use of the zero-length array language
> extension to the C90 standard, but the preferred mechanism to declare
> variable-length types such as these ones is a flexible array member[1][2],
> introduced in C99:
> 
> struct foo {
>         int stuff;
>         struct boo array[];
> };
> 
> By making use of the mechanism above, we will get a compiler warning
> in case the flexible array does not occur last in the structure, which
> will help us prevent some kind of undefined behavior bugs from being
> inadvertently introduced[3] to the codebase from now on.
> 
> Also, notice that, dynamic memory allocations won't be affected by
> this change:
> 
> "Flexible array members have incomplete type, and so the sizeof operator
> may not be applied. As a quirk of the original implementation of
> zero-length arrays, sizeof evaluates to zero."[1]
> 
> This issue was found with the help of Coccinelle.
> 
> [1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html
> [2] https://github.com/KSPP/linux/issues/21
> [3] commit 76497732932f ("cxgb3/l2t: Fix undefined behaviour")
> 
> Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>

yes, thank you!

Reviewed-by: Andi Shyti <andi@etezian.org>

Andi

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Applied "spi: spi-s3c24xx: Replace zero-length array with flexible-array member" to the spi tree
  2020-03-20 23:25 [PATCH][next] spi: spi-s3c24xx: Replace zero-length array with flexible-array member Gustavo A. R. Silva
  2020-03-22 20:46 ` Andi Shyti
@ 2020-03-23 18:37 ` Mark Brown
  1 sibling, 0 replies; 3+ messages in thread
From: Mark Brown @ 2020-03-23 18:37 UTC (permalink / raw)
  To: Gustavo A. R. Silva
  Cc: linux-samsung-soc, Gustavo A. R. Silva, Mark Brown, linux-kernel,
	Krzysztof Kozlowski, linux-spi, Kukjin Kim, Andi Shyti,
	linux-arm-kernel

The patch

   spi: spi-s3c24xx: Replace zero-length array with flexible-array member

has been applied to the spi tree at

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git 

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.  

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark

>From 2d4ccc2ac61b1a407a1c75633a3bf2f878ff44b5 Mon Sep 17 00:00:00 2001
From: "Gustavo A. R. Silva" <gustavo@embeddedor.com>
Date: Fri, 20 Mar 2020 18:25:56 -0500
Subject: [PATCH] spi: spi-s3c24xx: Replace zero-length array with
 flexible-array member

The current codebase makes use of the zero-length array language
extension to the C90 standard, but the preferred mechanism to declare
variable-length types such as these ones is a flexible array member[1][2],
introduced in C99:

struct foo {
        int stuff;
        struct boo array[];
};

By making use of the mechanism above, we will get a compiler warning
in case the flexible array does not occur last in the structure, which
will help us prevent some kind of undefined behavior bugs from being
inadvertently introduced[3] to the codebase from now on.

Also, notice that, dynamic memory allocations won't be affected by
this change:

"Flexible array members have incomplete type, and so the sizeof operator
may not be applied. As a quirk of the original implementation of
zero-length arrays, sizeof evaluates to zero."[1]

This issue was found with the help of Coccinelle.

[1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html
[2] https://github.com/KSPP/linux/issues/21
[3] commit 76497732932f ("cxgb3/l2t: Fix undefined behaviour")

Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Reviewed-by: Andi Shyti <andi@etezian.org>
Link: https://lore.kernel.org/r/20200320232556.GA24989@embeddedor.com
Signed-off-by: Mark Brown <broonie@kernel.org>
---
 drivers/spi/spi-s3c24xx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/spi/spi-s3c24xx.c b/drivers/spi/spi-s3c24xx.c
index 2d6e37f25e2d..2cb3b611c294 100644
--- a/drivers/spi/spi-s3c24xx.c
+++ b/drivers/spi/spi-s3c24xx.c
@@ -227,7 +227,7 @@ static inline unsigned int hw_txbyte(struct s3c24xx_spi *hw, int count)
 struct spi_fiq_code {
 	u32	length;
 	u32	ack_offset;
-	u8	data[0];
+	u8	data[];
 };
 
 extern struct spi_fiq_code s3c24xx_spi_fiq_txrx;
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-03-23 18:37 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-20 23:25 [PATCH][next] spi: spi-s3c24xx: Replace zero-length array with flexible-array member Gustavo A. R. Silva
2020-03-22 20:46 ` Andi Shyti
2020-03-23 18:37 ` Applied "spi: spi-s3c24xx: Replace zero-length array with flexible-array member" to the spi tree Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).