mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] ASoC: codecs: rt712-sdca-dmic: fix uninitialized stream_config->type
@ 2026-09-14 10:47 Jiangshan Yi
  2026-09-14 17:55 ` Pierre-Louis Bossart
  0 siblings, 1 reply; 2+ messages in thread
From: Jiangshan Yi @ 2026-09-14 10:47 UTC (permalink / raw)
  To: oder_chiou, lgirdwood, broonie, perex, tiwai
  Cc: shumingf, linux-sound, linux-kernel, 13667453960, Jiangshan Yi, stable

stream_config is not initialized before being passed to
sdw_stream_add_slave().  The type field may contain garbage and is
later copied to stream->type by sdw_config_stream().

Zero-initialize stream_config so type defaults to SDW_STREAM_PCM.

While at it, use snd_sdw_params_to_config() helper instead of
open-coding the same logic.

Fixes: 63a511284c9e ("ASoC: rt712-sdca: Add RT712 SDCA driver for Mic topology")
Cc: stable@vger.kernel.org
Signed-off-by: Jiangshan Yi <yijiangshan@kylinos.cn>
---
 sound/soc/codecs/rt712-sdca-dmic.c | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/sound/soc/codecs/rt712-sdca-dmic.c b/sound/soc/codecs/rt712-sdca-dmic.c
index 8860d81134e7..a9f3aa4e143a 100644
--- a/sound/soc/codecs/rt712-sdca-dmic.c
+++ b/sound/soc/codecs/rt712-sdca-dmic.c
@@ -13,6 +13,7 @@
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/pcm_params.h>
+#include <sound/sdw.h>
 #include <sound/tlv.h>
 #include "rt712-sdca.h"
 #include "rt712-sdca-dmic.h"
@@ -632,10 +633,10 @@ static int rt712_sdca_dmic_hw_params(struct snd_pcm_substream *substream,
 {
 	struct snd_soc_component *component = dai->component;
 	struct rt712_sdca_dmic_priv *rt712 = snd_soc_component_get_drvdata(component);
-	struct sdw_stream_config stream_config;
+	struct sdw_stream_config stream_config = {0};
 	struct sdw_port_config port_config;
 	struct sdw_stream_runtime *sdw_stream;
-	int retval, num_channels;
+	int retval;
 	unsigned int sampling_rate;

 	dev_dbg(dai->dev, "%s %s", __func__, dai->name);
@@ -647,13 +648,8 @@ static int rt712_sdca_dmic_hw_params(struct snd_pcm_substream *substream,
 	if (!rt712->slave)
 		return -EINVAL;

-	stream_config.frame_rate = params_rate(params);
-	stream_config.ch_count = params_channels(params);
-	stream_config.bps = snd_pcm_format_width(params_format(params));
-	stream_config.direction = SDW_DATA_DIR_TX;
-
-	num_channels = params_channels(params);
-	port_config.ch_mask = GENMASK(num_channels - 1, 0);
+	/* SoundWire specific configuration */
+	snd_sdw_params_to_config(substream, params, &stream_config, &port_config);
 	port_config.num = 2;

 	retval = sdw_stream_add_slave(rt712->slave, &stream_config,
--
2.25.1


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

* Re: [PATCH] ASoC: codecs: rt712-sdca-dmic: fix uninitialized stream_config->type
  2026-09-14 10:47 [PATCH] ASoC: codecs: rt712-sdca-dmic: fix uninitialized stream_config->type Jiangshan Yi
@ 2026-09-14 17:55 ` Pierre-Louis Bossart
  0 siblings, 0 replies; 2+ messages in thread
From: Pierre-Louis Bossart @ 2026-09-14 17:55 UTC (permalink / raw)
  To: Jiangshan Yi, oder_chiou, lgirdwood, broonie, perex, tiwai
  Cc: shumingf, linux-sound, linux-kernel, 13667453960, stable

On 9/14/26 12:47, Jiangshan Yi wrote:
> stream_config is not initialized before being passed to
> sdw_stream_add_slave().  The type field may contain garbage and is
> later copied to stream->type by sdw_config_stream().
> 
> Zero-initialize stream_config so type defaults to SDW_STREAM_PCM.
> 
> While at it, use snd_sdw_params_to_config() helper instead of
> open-coding the same logic.
> 
> Fixes: 63a511284c9e ("ASoC: rt712-sdca: Add RT712 SDCA driver for Mic topology")
> Cc: stable@vger.kernel.org
> Signed-off-by: Jiangshan Yi <yijiangshan@kylinos.cn>
> ---
>  sound/soc/codecs/rt712-sdca-dmic.c | 14 +++++---------
>  1 file changed, 5 insertions(+), 9 deletions(-)

This change looks correct, and there are quite a few other codecs in the
same directory where the same change could be applied. Just look for
"struct sdw_stream_config stream_config;"

For this patch here's my

Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>


> 
> diff --git a/sound/soc/codecs/rt712-sdca-dmic.c b/sound/soc/codecs/rt712-sdca-dmic.c
> index 8860d81134e7..a9f3aa4e143a 100644
> --- a/sound/soc/codecs/rt712-sdca-dmic.c
> +++ b/sound/soc/codecs/rt712-sdca-dmic.c
> @@ -13,6 +13,7 @@
>  #include <sound/core.h>
>  #include <sound/pcm.h>
>  #include <sound/pcm_params.h>
> +#include <sound/sdw.h>
>  #include <sound/tlv.h>
>  #include "rt712-sdca.h"
>  #include "rt712-sdca-dmic.h"
> @@ -632,10 +633,10 @@ static int rt712_sdca_dmic_hw_params(struct snd_pcm_substream *substream,
>  {
>  	struct snd_soc_component *component = dai->component;
>  	struct rt712_sdca_dmic_priv *rt712 = snd_soc_component_get_drvdata(component);
> -	struct sdw_stream_config stream_config;
> +	struct sdw_stream_config stream_config = {0};
>  	struct sdw_port_config port_config;
>  	struct sdw_stream_runtime *sdw_stream;
> -	int retval, num_channels;
> +	int retval;
>  	unsigned int sampling_rate;
> 
>  	dev_dbg(dai->dev, "%s %s", __func__, dai->name);
> @@ -647,13 +648,8 @@ static int rt712_sdca_dmic_hw_params(struct snd_pcm_substream *substream,
>  	if (!rt712->slave)
>  		return -EINVAL;
> 
> -	stream_config.frame_rate = params_rate(params);
> -	stream_config.ch_count = params_channels(params);
> -	stream_config.bps = snd_pcm_format_width(params_format(params));
> -	stream_config.direction = SDW_DATA_DIR_TX;
> -
> -	num_channels = params_channels(params);
> -	port_config.ch_mask = GENMASK(num_channels - 1, 0);
> +	/* SoundWire specific configuration */
> +	snd_sdw_params_to_config(substream, params, &stream_config, &port_config);
>  	port_config.num = 2;
> 
>  	retval = sdw_stream_add_slave(rt712->slave, &stream_config,
> --
> 2.25.1
> 
> 


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

end of thread, other threads:[~2026-09-14 18:29 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-14 10:47 [PATCH] ASoC: codecs: rt712-sdca-dmic: fix uninitialized stream_config->type Jiangshan Yi
2026-09-14 17:55 ` Pierre-Louis Bossart

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®