Re: [PATCH] ASoC: codecs: rt712-sdca-dmic: fix uninitialized stream_config->type
From: Pierre-Louis Bossart
Date: Mon Sep 14 2026 - 14:43:24 EST
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@xxxxxxxxxxxxxxx
> Signed-off-by: Jiangshan Yi <yijiangshan@xxxxxxxxxx>
> ---
> 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@xxxxxxxxx>
>
> 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
>
>