linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] ASoC: SOF: Replace zero-length array with flexible-array member
@ 2022-02-17 13:27 Stephen Kitt
  2022-02-17 16:44 ` Gustavo A. R. Silva
  2022-02-17 18:32 ` Mark Brown
  0 siblings, 2 replies; 4+ messages in thread
From: Stephen Kitt @ 2022-02-17 13:27 UTC (permalink / raw)
  To: Jaroslav Kysela, Takashi Iwai, Pierre-Louis Bossart,
	Liam Girdwood, Ranjani Sridharan, Kai Vehmanen, Daniel Baluta
  Cc: alsa-devel, linux-kernel, sound-open-firmware, Stephen Kitt,
	Gustavo A . R . Silva

There is a regular need in the kernel to provide a way to declare having
a dynamically sized set of trailing elements in a structure. Kernel code
should always use "flexible array members"[1] for these cases. The older
style of one-element or zero-length arrays should no longer be used[2].

This helps with the ongoing efforts to globally enable -Warray-bounds
and get us closer to being able to tighten the FORTIFY_SOURCE routines
on memcpy().

[1] https://en.wikipedia.org/wiki/Flexible_array_member
[2] https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays

Link: https://github.com/KSPP/linux/issues/78
Link: https://github.com/KSPP/linux/issues/180
Suggested-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Signed-off-by: Stephen Kitt <steve@sk2.org>
---
 include/sound/sof/topology.h | 2 +-
 sound/soc/sof/topology.c     | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/sound/sof/topology.h b/include/sound/sof/topology.h
index d12736e14b69..adee6afd1490 100644
--- a/include/sound/sof/topology.h
+++ b/include/sound/sof/topology.h
@@ -237,7 +237,7 @@ struct sof_ipc_comp_process {
 	/* reserved for future use */
 	uint32_t reserved[7];
 
-	uint8_t data[0];
+	uint8_t data[];
 } __packed;
 
 /* frees components, buffers and pipelines
diff --git a/sound/soc/sof/topology.c b/sound/soc/sof/topology.c
index e72dcae5e7ee..1d119d1dd69d 100644
--- a/sound/soc/sof/topology.c
+++ b/sound/soc/sof/topology.c
@@ -2164,7 +2164,7 @@ static int sof_process_load(struct snd_soc_component *scomp, int index,
 	 */
 	if (ipc_data_size) {
 		for (i = 0; i < widget->num_kcontrols; i++) {
-			memcpy(&process->data + offset,
+			memcpy(&process->data[offset],
 			       wdata[i].pdata->data,
 			       wdata[i].pdata->size);
 			offset += wdata[i].pdata->size;

base-commit: f71077a4d84bbe8c7b91b7db7c4ef815755ac5e3
-- 
2.27.0


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

* Re: [PATCH] ASoC: SOF: Replace zero-length array with flexible-array member
  2022-02-17 13:27 [PATCH] ASoC: SOF: Replace zero-length array with flexible-array member Stephen Kitt
@ 2022-02-17 16:44 ` Gustavo A. R. Silva
  2022-02-17 16:57   ` Pierre-Louis Bossart
  2022-02-17 18:32 ` Mark Brown
  1 sibling, 1 reply; 4+ messages in thread
From: Gustavo A. R. Silva @ 2022-02-17 16:44 UTC (permalink / raw)
  To: Stephen Kitt
  Cc: Jaroslav Kysela, Takashi Iwai, Pierre-Louis Bossart,
	Liam Girdwood, Ranjani Sridharan, Kai Vehmanen, Daniel Baluta,
	alsa-devel, linux-kernel, sound-open-firmware, linux-hardening,
	Mark Brown

On Thu, Feb 17, 2022 at 02:27:55PM +0100, Stephen Kitt wrote:
> There is a regular need in the kernel to provide a way to declare having
> a dynamically sized set of trailing elements in a structure. Kernel code
> should always use "flexible array members"[1] for these cases. The older
> style of one-element or zero-length arrays should no longer be used[2].
> 
> This helps with the ongoing efforts to globally enable -Warray-bounds
> and get us closer to being able to tighten the FORTIFY_SOURCE routines
> on memcpy().
> 
> [1] https://en.wikipedia.org/wiki/Flexible_array_member
> [2] https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays
> 
> Link: https://github.com/KSPP/linux/issues/78
> Link: https://github.com/KSPP/linux/issues/180
> Suggested-by: Gustavo A. R. Silva <gustavoars@kernel.org>
> Signed-off-by: Stephen Kitt <steve@sk2.org>

Reviewed-by: Gustavo A. R. Silva <gustavoars@kernel.org>

Thanks!
--
Gustavo

> ---
>  include/sound/sof/topology.h | 2 +-
>  sound/soc/sof/topology.c     | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/include/sound/sof/topology.h b/include/sound/sof/topology.h
> index d12736e14b69..adee6afd1490 100644
> --- a/include/sound/sof/topology.h
> +++ b/include/sound/sof/topology.h
> @@ -237,7 +237,7 @@ struct sof_ipc_comp_process {
>  	/* reserved for future use */
>  	uint32_t reserved[7];
>  
> -	uint8_t data[0];
> +	uint8_t data[];
>  } __packed;
>  
>  /* frees components, buffers and pipelines
> diff --git a/sound/soc/sof/topology.c b/sound/soc/sof/topology.c
> index e72dcae5e7ee..1d119d1dd69d 100644
> --- a/sound/soc/sof/topology.c
> +++ b/sound/soc/sof/topology.c
> @@ -2164,7 +2164,7 @@ static int sof_process_load(struct snd_soc_component *scomp, int index,
>  	 */
>  	if (ipc_data_size) {
>  		for (i = 0; i < widget->num_kcontrols; i++) {
> -			memcpy(&process->data + offset,
> +			memcpy(&process->data[offset],
>  			       wdata[i].pdata->data,
>  			       wdata[i].pdata->size);
>  			offset += wdata[i].pdata->size;
> 
> base-commit: f71077a4d84bbe8c7b91b7db7c4ef815755ac5e3
> -- 
> 2.27.0
> 

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

* Re: [PATCH] ASoC: SOF: Replace zero-length array with flexible-array member
  2022-02-17 16:44 ` Gustavo A. R. Silva
@ 2022-02-17 16:57   ` Pierre-Louis Bossart
  0 siblings, 0 replies; 4+ messages in thread
From: Pierre-Louis Bossart @ 2022-02-17 16:57 UTC (permalink / raw)
  To: Gustavo A. R. Silva, Stephen Kitt
  Cc: Jaroslav Kysela, Takashi Iwai, Liam Girdwood, Ranjani Sridharan,
	Kai Vehmanen, Daniel Baluta, alsa-devel, linux-kernel,
	sound-open-firmware, linux-hardening, Mark Brown



On 2/17/22 10:44, Gustavo A. R. Silva wrote:
> On Thu, Feb 17, 2022 at 02:27:55PM +0100, Stephen Kitt wrote:
>> There is a regular need in the kernel to provide a way to declare having
>> a dynamically sized set of trailing elements in a structure. Kernel code
>> should always use "flexible array members"[1] for these cases. The older
>> style of one-element or zero-length arrays should no longer be used[2].
>>
>> This helps with the ongoing efforts to globally enable -Warray-bounds
>> and get us closer to being able to tighten the FORTIFY_SOURCE routines
>> on memcpy().
>>
>> [1] https://en.wikipedia.org/wiki/Flexible_array_member
>> [2] https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays
>>
>> Link: https://github.com/KSPP/linux/issues/78
>> Link: https://github.com/KSPP/linux/issues/180
>> Suggested-by: Gustavo A. R. Silva <gustavoars@kernel.org>
>> Signed-off-by: Stephen Kitt <steve@sk2.org>
> 
> Reviewed-by: Gustavo A. R. Silva <gustavoars@kernel.org>

Thanks for the patch

Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>

I just realized we have additional cases in this directory (interface
between kernel and firmware), I'll send a follow-up patch a

channel_map.h:  int32_t ch_coeffs[0];
channel_map.h:  struct sof_ipc_channel_map ch_map[0];
control.h:              struct sof_ipc_ctrl_value_chan chanv[0];
control.h:              struct sof_ipc_ctrl_value_comp compv[0];
control.h:              struct sof_abi_hdr data[0];
control.h:              struct sof_abi_hdr data[0];

> 
> Thanks!
> --
> Gustavo
> 
>> ---
>>  include/sound/sof/topology.h | 2 +-
>>  sound/soc/sof/topology.c     | 2 +-
>>  2 files changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/include/sound/sof/topology.h b/include/sound/sof/topology.h
>> index d12736e14b69..adee6afd1490 100644
>> --- a/include/sound/sof/topology.h
>> +++ b/include/sound/sof/topology.h
>> @@ -237,7 +237,7 @@ struct sof_ipc_comp_process {
>>  	/* reserved for future use */
>>  	uint32_t reserved[7];
>>  
>> -	uint8_t data[0];
>> +	uint8_t data[];
>>  } __packed;
>>  
>>  /* frees components, buffers and pipelines
>> diff --git a/sound/soc/sof/topology.c b/sound/soc/sof/topology.c
>> index e72dcae5e7ee..1d119d1dd69d 100644
>> --- a/sound/soc/sof/topology.c
>> +++ b/sound/soc/sof/topology.c
>> @@ -2164,7 +2164,7 @@ static int sof_process_load(struct snd_soc_component *scomp, int index,
>>  	 */
>>  	if (ipc_data_size) {
>>  		for (i = 0; i < widget->num_kcontrols; i++) {
>> -			memcpy(&process->data + offset,
>> +			memcpy(&process->data[offset],
>>  			       wdata[i].pdata->data,
>>  			       wdata[i].pdata->size);
>>  			offset += wdata[i].pdata->size;
>>
>> base-commit: f71077a4d84bbe8c7b91b7db7c4ef815755ac5e3
>> -- 
>> 2.27.0
>>

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

* Re: [PATCH] ASoC: SOF: Replace zero-length array with flexible-array member
  2022-02-17 13:27 [PATCH] ASoC: SOF: Replace zero-length array with flexible-array member Stephen Kitt
  2022-02-17 16:44 ` Gustavo A. R. Silva
@ 2022-02-17 18:32 ` Mark Brown
  1 sibling, 0 replies; 4+ messages in thread
From: Mark Brown @ 2022-02-17 18:32 UTC (permalink / raw)
  To: Ranjani Sridharan, Stephen Kitt, Jaroslav Kysela, Takashi Iwai,
	Kai Vehmanen, Pierre-Louis Bossart, Liam Girdwood, Daniel Baluta
  Cc: linux-kernel, sound-open-firmware, alsa-devel, Gustavo A . R . Silva

On Thu, 17 Feb 2022 14:27:55 +0100, Stephen Kitt wrote:
> There is a regular need in the kernel to provide a way to declare having
> a dynamically sized set of trailing elements in a structure. Kernel code
> should always use "flexible array members"[1] for these cases. The older
> style of one-element or zero-length arrays should no longer be used[2].
> 
> This helps with the ongoing efforts to globally enable -Warray-bounds
> and get us closer to being able to tighten the FORTIFY_SOURCE routines
> on memcpy().
> 
> [...]

Applied to

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

Thanks!

[1/1] ASoC: SOF: Replace zero-length array with flexible-array member
      commit: 4fe6a63077a6d3c143d68f6b96e4051f1d0740ac

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] 4+ messages in thread

end of thread, other threads:[~2022-02-17 18:33 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-17 13:27 [PATCH] ASoC: SOF: Replace zero-length array with flexible-array member Stephen Kitt
2022-02-17 16:44 ` Gustavo A. R. Silva
2022-02-17 16:57   ` Pierre-Louis Bossart
2022-02-17 18:32 ` 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).