All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH RESEND] ASoC: Intel: Skylake: Replace zero-length array with flexible-array
@ 2020-05-11 17:46 Gustavo A. R. Silva
  2020-05-11 18:17   ` Cezary Rojewski
  2020-05-12 16:44 ` Mark Brown
  0 siblings, 2 replies; 6+ messages in thread
From: Gustavo A. R. Silva @ 2020-05-11 17:46 UTC (permalink / raw)
  To: Cezary Rojewski, Pierre-Louis Bossart, Liam Girdwood, Jie Yang,
	Mark Brown, Jaroslav Kysela, Takashi Iwai
  Cc: alsa-devel, linux-kernel

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]

sizeof(flexible-array-member) triggers a warning because flexible array
members have incomplete type[1]. There are some instances of code in
which the sizeof operator is being incorrectly/erroneously applied to
zero-length arrays and the result is zero. Such instances may be hiding
some bugs. So, this work (flexible-array member conversions) will also
help to get completely rid of those sorts of issues.

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 <gustavoars@kernel.org>
---
 sound/soc/intel/atom/sst-atom-controls.h |    2 +-
 sound/soc/intel/skylake/skl-i2s.h        |    2 +-
 sound/soc/intel/skylake/skl-topology.h   |    4 ++--
 sound/soc/intel/skylake/skl.h            |    2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/sound/soc/intel/atom/sst-atom-controls.h b/sound/soc/intel/atom/sst-atom-controls.h
index 5356e954a732..620b48d2a064 100644
--- a/sound/soc/intel/atom/sst-atom-controls.h
+++ b/sound/soc/intel/atom/sst-atom-controls.h
@@ -410,7 +410,7 @@ struct sst_cmd_set_gain_dual {
 struct sst_cmd_set_params {
 	struct sst_destination_id dst;
 	u16 command_id;
-	char params[0];
+	char params[];
 } __packed;
 
 
diff --git a/sound/soc/intel/skylake/skl-i2s.h b/sound/soc/intel/skylake/skl-i2s.h
index d7c15873c0d4..dfce91e11be1 100644
--- a/sound/soc/intel/skylake/skl-i2s.h
+++ b/sound/soc/intel/skylake/skl-i2s.h
@@ -46,7 +46,7 @@ struct skl_i2s_config_mclk {
 struct skl_i2s_config_mclk_ext {
 	u32 mdivctrl;
 	u32 mdivr_count;
-	u32 mdivr[0];
+	u32 mdivr[];
 } __packed;
 
 struct skl_i2s_config_blob_signature {
diff --git a/sound/soc/intel/skylake/skl-topology.h b/sound/soc/intel/skylake/skl-topology.h
index e967800dbb62..d2cd8ef8e97f 100644
--- a/sound/soc/intel/skylake/skl-topology.h
+++ b/sound/soc/intel/skylake/skl-topology.h
@@ -119,7 +119,7 @@ struct skl_cpr_gtw_cfg {
 struct skl_dma_control {
 	u32 node_id;
 	u32 config_length;
-	u32 config_data[0];
+	u32 config_data[];
 } __packed;
 
 struct skl_cpr_cfg {
@@ -152,7 +152,7 @@ struct skl_up_down_mixer_cfg {
 
 struct skl_algo_cfg {
 	struct skl_base_cfg  base_cfg;
-	char params[0];
+	char params[];
 } __packed;
 
 struct skl_base_outfmt_cfg {
diff --git a/sound/soc/intel/skylake/skl.h b/sound/soc/intel/skylake/skl.h
index 2bfbf59277c4..26057f38a014 100644
--- a/sound/soc/intel/skylake/skl.h
+++ b/sound/soc/intel/skylake/skl.h
@@ -49,7 +49,7 @@ struct skl_astate_param {
 
 struct skl_astate_config {
 	u32 count;
-	struct skl_astate_param astate_table[0];
+	struct skl_astate_param astate_table[];
 };
 
 struct skl_fw_config {


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

* Re: [PATCH RESEND] ASoC: Intel: Skylake: Replace zero-length array with flexible-array
  2020-05-11 17:46 [PATCH RESEND] ASoC: Intel: Skylake: Replace zero-length array with flexible-array Gustavo A. R. Silva
@ 2020-05-11 18:17   ` Cezary Rojewski
  2020-05-12 16:44 ` Mark Brown
  1 sibling, 0 replies; 6+ messages in thread
From: Cezary Rojewski @ 2020-05-11 18:17 UTC (permalink / raw)
  To: Gustavo A. R. Silva
  Cc: Pierre-Louis Bossart, Liam Girdwood, Jie Yang, Mark Brown,
	Jaroslav Kysela, Takashi Iwai, alsa-devel, linux-kernel

On 2020-05-11 7:46 PM, 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]
> 
> sizeof(flexible-array-member) triggers a warning because flexible array
> members have incomplete type[1]. There are some instances of code in
> which the sizeof operator is being incorrectly/erroneously applied to
> zero-length arrays and the result is zero. Such instances may be hiding
> some bugs. So, this work (flexible-array member conversions) will also
> help to get completely rid of those sorts of issues.
> 
> 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 <gustavoars@kernel.org>
> ---
>   sound/soc/intel/atom/sst-atom-controls.h |    2 +-
>   sound/soc/intel/skylake/skl-i2s.h        |    2 +-
>   sound/soc/intel/skylake/skl-topology.h   |    4 ++--
>   sound/soc/intel/skylake/skl.h            |    2 +-
>   4 files changed, 5 insertions(+), 5 deletions(-)
> 

Acked-by: Cezary Rojewski <cezary.rojewski@intel.com>

Thanks,
Czarek

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

* Re: [PATCH RESEND] ASoC: Intel: Skylake: Replace zero-length array with flexible-array
@ 2020-05-11 18:17   ` Cezary Rojewski
  0 siblings, 0 replies; 6+ messages in thread
From: Cezary Rojewski @ 2020-05-11 18:17 UTC (permalink / raw)
  To: Gustavo A. R. Silva
  Cc: alsa-devel, linux-kernel, Jie Yang, Takashi Iwai,
	Pierre-Louis Bossart, Liam Girdwood, Mark Brown

On 2020-05-11 7:46 PM, 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]
> 
> sizeof(flexible-array-member) triggers a warning because flexible array
> members have incomplete type[1]. There are some instances of code in
> which the sizeof operator is being incorrectly/erroneously applied to
> zero-length arrays and the result is zero. Such instances may be hiding
> some bugs. So, this work (flexible-array member conversions) will also
> help to get completely rid of those sorts of issues.
> 
> 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 <gustavoars@kernel.org>
> ---
>   sound/soc/intel/atom/sst-atom-controls.h |    2 +-
>   sound/soc/intel/skylake/skl-i2s.h        |    2 +-
>   sound/soc/intel/skylake/skl-topology.h   |    4 ++--
>   sound/soc/intel/skylake/skl.h            |    2 +-
>   4 files changed, 5 insertions(+), 5 deletions(-)
> 

Acked-by: Cezary Rojewski <cezary.rojewski@intel.com>

Thanks,
Czarek

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

* Re: [PATCH RESEND] ASoC: Intel: Skylake: Replace zero-length array with flexible-array
  2020-05-11 17:46 [PATCH RESEND] ASoC: Intel: Skylake: Replace zero-length array with flexible-array Gustavo A. R. Silva
  2020-05-11 18:17   ` Cezary Rojewski
@ 2020-05-12 16:44 ` Mark Brown
  2020-05-12 18:09     ` Gustavo A. R. Silva
  1 sibling, 1 reply; 6+ messages in thread
From: Mark Brown @ 2020-05-12 16:44 UTC (permalink / raw)
  To: Liam Girdwood, Jaroslav Kysela, Pierre-Louis Bossart, Jie Yang,
	Gustavo A. R. Silva, Cezary Rojewski, Takashi Iwai
  Cc: alsa-devel, linux-kernel

On Mon, 11 May 2020 12:46:47 -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[];
> };
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.8

Thanks!

[1/1] ASoC: Intel: Skylake: Replace zero-length array with flexible-array
      commit: 936b9df7a5c00db92088b3c51316d5f551ee5b2c

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

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

* Re: [PATCH RESEND] ASoC: Intel: Skylake: Replace zero-length array with flexible-array
  2020-05-12 16:44 ` Mark Brown
@ 2020-05-12 18:09     ` Gustavo A. R. Silva
  0 siblings, 0 replies; 6+ messages in thread
From: Gustavo A. R. Silva @ 2020-05-12 18:09 UTC (permalink / raw)
  To: Mark Brown
  Cc: Liam Girdwood, Jaroslav Kysela, Pierre-Louis Bossart, Jie Yang,
	Cezary Rojewski, Takashi Iwai, alsa-devel, linux-kernel

On Tue, May 12, 2020 at 05:44:50PM +0100, Mark Brown wrote:
> 
> Applied to
> 
>    https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.8
> 

Thanks, Mark.

--
Gustavo

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

* Re: [PATCH RESEND] ASoC: Intel: Skylake: Replace zero-length array with flexible-array
@ 2020-05-12 18:09     ` Gustavo A. R. Silva
  0 siblings, 0 replies; 6+ messages in thread
From: Gustavo A. R. Silva @ 2020-05-12 18:09 UTC (permalink / raw)
  To: Mark Brown
  Cc: Cezary Rojewski, alsa-devel, linux-kernel, Jie Yang,
	Takashi Iwai, Pierre-Louis Bossart, Liam Girdwood

On Tue, May 12, 2020 at 05:44:50PM +0100, Mark Brown wrote:
> 
> Applied to
> 
>    https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.8
> 

Thanks, Mark.

--
Gustavo

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

end of thread, other threads:[~2020-05-12 18:05 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-11 17:46 [PATCH RESEND] ASoC: Intel: Skylake: Replace zero-length array with flexible-array Gustavo A. R. Silva
2020-05-11 18:17 ` Cezary Rojewski
2020-05-11 18:17   ` Cezary Rojewski
2020-05-12 16:44 ` Mark Brown
2020-05-12 18:09   ` Gustavo A. R. Silva
2020-05-12 18:09     ` Gustavo A. R. Silva

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.