* [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®