Linux Sound subsystem development
 help / color / mirror / Atom feed
* [PATCH] ASoC: sdw_utils: senary: handle a missing name_prefix
@ 2026-11-10  7:34 Qianghua Wang
  2026-11-10  7:44 ` sashiko-bot
  2026-11-10  8:05 ` [PATCH v2] " Qianghua Wang
  0 siblings, 2 replies; 5+ messages in thread
From: Qianghua Wang @ 2026-11-10  7:34 UTC (permalink / raw)
  To: Mark Brown
  Cc: linux-sound, Liam Girdwood, Jaroslav Kysela, Takashi Iwai,
	Cezary Rojewski, Peter Ujfalusi, Bard Liao, Kai Vehmanen,
	Pierre-Louis Bossart, bo liu, Qianghua Wang

asoc_sdw_senary_sdca_jack_rtd_init() passes component->name_prefix to
strstr(). When codec_conf does not apply the prefix, name_prefix is
NULL and card registration oopses.

DAPM widgets then keep the bare names from the codec driver (HP, MIC2,
SPK, DMIC). Keep the existing "sn624x ..." routes when name_prefix is
set, and connect those bare widgets when it is missing. card->components
still reports hs:sn624x-sdca and mic:sn624x-dmic.

Signed-off-by: Qianghua Wang <qianghua.wang@senarytech.com>
---

diff --git a/sound/soc/sdw_utils/soc_sdw_senary_dmic.c b/sound/soc/sdw_utils/soc_sdw_senary_dmic.c
index 748170656..725f4658e 100644
--- a/sound/soc/sdw_utils/soc_sdw_senary_dmic.c
+++ b/sound/soc/sdw_utils/soc_sdw_senary_dmic.c
@@ -15,6 +15,10 @@ static const struct snd_soc_dapm_route senary_dmic_map[] = {
 	{ "sn624x DMIC", NULL, "Dmic" },
 };
 
+static const struct snd_soc_dapm_route senary_dmic_map_bare[] = {
+	{ "DMIC", NULL, "Dmic" },
+};
+
 int asoc_sdw_senary_dmic_rtd_init(struct snd_soc_pcm_runtime *rtd, struct snd_soc_dai *dai)
 {
 	struct snd_soc_card *card = rtd->card;
@@ -25,14 +29,21 @@ int asoc_sdw_senary_dmic_rtd_init(struct snd_soc_pcm_runtime *rtd, struct snd_so
 
 	component = dai->component;
 
-	ret = snd_soc_dapm_add_routes(dapm, senary_dmic_map,
-				      ARRAY_SIZE(senary_dmic_map));
+	if (component->name_prefix) {
+		ret = snd_soc_dapm_add_routes(dapm, senary_dmic_map,
+					      ARRAY_SIZE(senary_dmic_map));
+		mic_name = devm_kstrdup(card->dev, component->name_prefix, GFP_KERNEL);
+	} else {
+		dev_warn(card->dev, "sn624x dmic: component %s has no name_prefix\n",
+			 component->name);
+		ret = snd_soc_dapm_add_routes(dapm, senary_dmic_map_bare,
+					      ARRAY_SIZE(senary_dmic_map_bare));
+		mic_name = devm_kstrdup(card->dev, "sn624x", GFP_KERNEL);
+	}
 	if (ret) {
 		dev_err(card->dev, "senary dmic map addition failed: %d\n", ret);
 		return ret;
 	}
-
-	mic_name = devm_kasprintf(card->dev, GFP_KERNEL, "%s", component->name_prefix);
 	if (!mic_name)
 		return -ENOMEM;
 
diff --git a/sound/soc/sdw_utils/soc_sdw_senary_sdca.c b/sound/soc/sdw_utils/soc_sdw_senary_sdca.c
index 5c2cd7530..0adde845a 100644
--- a/sound/soc/sdw_utils/soc_sdw_senary_sdca.c
+++ b/sound/soc/sdw_utils/soc_sdw_senary_sdca.c
@@ -18,6 +18,10 @@ static const struct snd_soc_dapm_route sn624x_spk_map[] = {
 	{ "Speaker", NULL, "sn624x SPK" },
 };
 
+static const struct snd_soc_dapm_route sn624x_spk_map_bare[] = {
+	{ "Speaker", NULL, "SPK" },
+};
+
 /* Structure to map codec names to respective route arrays and sizes */
 struct codec_route_map {
 	const char *codec_name;
@@ -45,16 +49,30 @@ int asoc_sdw_senary_sdca_spk_rtd_init(struct snd_soc_pcm_runtime *rtd, struct sn
 	struct snd_soc_dapm_context *dapm = snd_soc_card_to_dapm(card);
 	int ret;
 
-	/* Match by DAI name prefix (e.g. sn624x-sdca-aif2). */
 	const struct codec_route_map *route_map = get_codec_route_map(dai->name);
+	const struct snd_soc_dapm_route *routes;
+	size_t nroutes;
 
 	if (!route_map) {
 		dev_err(rtd->dev, "failed to get codec name and route map\n");
 		return -EINVAL;
 	}
 
-	/* Add routes */
-	ret = snd_soc_dapm_add_routes(dapm, route_map->route_map, route_map->route_size);
+	/*
+	 * No name_prefix means the codec widgets were created as "SPK",
+	 * not "sn624x SPK". DAI name is still sn624x-sdca-aif2.
+	 */
+	if (!dai->component->name_prefix) {
+		dev_warn(rtd->dev, "sn624x spk: component %s has no name_prefix\n",
+			 dai->component->name);
+		routes = sn624x_spk_map_bare;
+		nroutes = ARRAY_SIZE(sn624x_spk_map_bare);
+	} else {
+		routes = route_map->route_map;
+		nroutes = route_map->route_size;
+	}
+
+	ret = snd_soc_dapm_add_routes(dapm, routes, nroutes);
 	if (ret)
 		dev_err(rtd->dev, "failed to add rt sdca spk map: %d\n", ret);
 
diff --git a/sound/soc/sdw_utils/soc_sdw_senary_sdca_jack_common.c b/sound/soc/sdw_utils/soc_sdw_senary_sdca_jack_common.c
index 1dab6f998..c61c1f160 100644
--- a/sound/soc/sdw_utils/soc_sdw_senary_sdca_jack_common.c
+++ b/sound/soc/sdw_utils/soc_sdw_senary_sdca_jack_common.c
@@ -57,6 +57,12 @@ static const struct snd_soc_dapm_route senary_sdca_jack_map[] = {
 	{ "sn624x MIC2", NULL, "Headset Mic" },
 };
 
+/* Widget names stay bare when codec_conf did not apply a name_prefix. */
+static const struct snd_soc_dapm_route senary_sdca_jack_map_bare[] = {
+	{ "Headphone", NULL, "HP" },
+	{ "MIC2", NULL, "Headset Mic" },
+};
+
 static struct snd_soc_jack_pin senary_sdca_jack_pins[] = {
 	{
 		.pin    = "Headphone",
@@ -68,10 +74,6 @@ static struct snd_soc_jack_pin senary_sdca_jack_pins[] = {
 	},
 };
 
-static const char * const need_sdca_suffix[] = {
-	"sn624x"
-};
-
 int asoc_sdw_senary_sdca_jack_rtd_init(struct snd_soc_pcm_runtime *rtd, struct snd_soc_dai *dai)
 {
 	struct snd_soc_card *card = rtd->card;
@@ -79,38 +81,41 @@ int asoc_sdw_senary_sdca_jack_rtd_init(struct snd_soc_pcm_runtime *rtd, struct s
 	struct asoc_sdw_mc_private *ctx = snd_soc_card_get_drvdata(card);
 	struct snd_soc_component *component;
 	struct snd_soc_jack *jack;
+	const struct snd_soc_dapm_route *routes = senary_sdca_jack_map;
+	const char *prefix;
+	int nroutes = ARRAY_SIZE(senary_sdca_jack_map);
 	int ret;
-	int i;
 
 	component = dai->component;
+	prefix = component->name_prefix;
+	/*
+	 * codec_conf should set name_prefix to "sn624x" before DAPM widgets
+	 * are created. If that match fails, name_prefix is NULL: strstr()
+	 * oopses, and the widgets keep the bare names from the codec driver.
+	 */
+	if (!prefix) {
+		dev_warn(card->dev,
+			 "sn624x jack: component %s has no name_prefix\n",
+			 component->name);
+		prefix = "sn624x";
+		routes = senary_sdca_jack_map_bare;
+		nroutes = ARRAY_SIZE(senary_sdca_jack_map_bare);
+	} else if (!strstr(prefix, "sn624x")) {
+		dev_err(card->dev, "%s is not supported\n", prefix);
+		return -EINVAL;
+	}
+
 	card->components = devm_kasprintf(card->dev, GFP_KERNEL,
-					  "%s hs:%s",
-					  card->components, component->name_prefix);
+					  "%s hs:%s-sdca",
+					  card->components, prefix);
 	if (!card->components)
 		return -ENOMEM;
 
-	for (i = 0; i < ARRAY_SIZE(need_sdca_suffix); i++) {
-		if (!strstr(component->name_prefix, need_sdca_suffix[i]))
-			continue;
-
-		card->components = devm_kasprintf(card->dev, GFP_KERNEL,
-						  "%s-sdca", card->components);
-		if (!card->components)
-			return -ENOMEM;
-
-		ret = snd_soc_dapm_add_routes(dapm, senary_sdca_jack_map,
-					      ARRAY_SIZE(senary_sdca_jack_map));
-		if (ret) {
-			dev_err(card->dev,
-				"senary sdca jack map addition failed: %d\n", ret);
-			return ret;
-		}
-		break;
-	}
-
-	if (i == ARRAY_SIZE(need_sdca_suffix)) {
-		dev_err(card->dev, "%s is not supported\n", component->name_prefix);
-		return -EINVAL;
+	ret = snd_soc_dapm_add_routes(dapm, routes, nroutes);
+	if (ret) {
+		dev_err(card->dev, "senary sdca jack map addition failed: %d\n",
+			ret);
+		return ret;
 	}
 
 	ret = snd_soc_card_jack_new_pins(rtd->card, "Headset Jack",

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

* Re: [PATCH] ASoC: sdw_utils: senary: handle a missing name_prefix
  2026-11-10  7:34 [PATCH] ASoC: sdw_utils: senary: handle a missing name_prefix Qianghua Wang
@ 2026-11-10  7:44 ` sashiko-bot
  2026-11-10  8:05 ` [PATCH v2] " Qianghua Wang
  1 sibling, 0 replies; 5+ messages in thread
From: sashiko-bot @ 2026-11-10  7:44 UTC (permalink / raw)
  To: Qianghua Wang; +Cc: linux-sound

Thank you for your contribution! Sashiko AI review found 1 potential
issue to consider:
- [Low] ASoC: sdw_utils: senary: missing Fixes trailer for NULL
  name_prefix fix
--

commit 845de21a0dee73033616aab7b25b28f57952951d
Author: Qianghua Wang <qianghua.wang@senarytech.com>

> ASoC: sdw_utils: senary: handle a missing name_prefix
>
> asoc_sdw_senary_sdca_jack_rtd_init() passes component->name_prefix to
> strstr(). When codec_conf does not apply the prefix, name_prefix is
> NULL and card registration oopses.
>
> DAPM widgets then keep the bare names from the codec driver (HP, MIC2,
> SPK, DMIC). Keep the existing "sn624x ..." routes when name_prefix is
> set, and connect those bare widgets when it is missing. card->components
> still reports hs:sn624x-sdca and mic:sn624x-dmic.
>
> Signed-off-by: Qianghua Wang <qianghua.wang@senarytech.com>

[Severity: Low]
Since this fixes a NULL pointer dereference in the SN624x helpers, should
the commit message include:

  Fixes: 77272ecd96d7 ("ASoC: sdw_utils: add Senary SN624x helpers and codec_info")

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261110073420.842175-1-qianghua.wang@senarytech.com?part=1

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

* [PATCH v2] ASoC: sdw_utils: senary: handle a missing name_prefix
  2026-11-10  7:34 [PATCH] ASoC: sdw_utils: senary: handle a missing name_prefix Qianghua Wang
  2026-11-10  7:44 ` sashiko-bot
@ 2026-11-10  8:05 ` Qianghua Wang
  2026-11-10 14:45   ` Liao, Bard
  1 sibling, 1 reply; 5+ messages in thread
From: Qianghua Wang @ 2026-11-10  8:05 UTC (permalink / raw)
  To: Mark Brown
  Cc: linux-sound, Liam Girdwood, Jaroslav Kysela, Takashi Iwai,
	Cezary Rojewski, Peter Ujfalusi, Bard Liao, Kai Vehmanen,
	Pierre-Louis Bossart, bo liu, Qianghua Wang

asoc_sdw_senary_sdca_jack_rtd_init() passes component->name_prefix to
strstr(). When codec_conf does not apply the prefix, name_prefix is
NULL and card registration oopses.

DAPM widgets then keep the bare names from the codec driver (HP, MIC2,
SPK, DMIC). Keep the existing "sn624x ..." routes when name_prefix is
set, and connect those bare widgets when it is missing. card->components
still reports hs:sn624x-sdca and mic:sn624x-dmic.

Fixes: 77272ecd96d7 ("ASoC: sdw_utils: add Senary SN624x helpers and codec_info")
Signed-off-by: Qianghua Wang <qianghua.wang@senarytech.com>
---
Changes in v2:
- add a Fixes: tag for 77272ecd96d7, which introduced the unguarded
  strstr() on component->name_prefix


diff --git a/sound/soc/sdw_utils/soc_sdw_senary_dmic.c b/sound/soc/sdw_utils/soc_sdw_senary_dmic.c
index 748170656..725f4658e 100644
--- a/sound/soc/sdw_utils/soc_sdw_senary_dmic.c
+++ b/sound/soc/sdw_utils/soc_sdw_senary_dmic.c
@@ -15,6 +15,10 @@ static const struct snd_soc_dapm_route senary_dmic_map[] = {
 	{ "sn624x DMIC", NULL, "Dmic" },
 };
 
+static const struct snd_soc_dapm_route senary_dmic_map_bare[] = {
+	{ "DMIC", NULL, "Dmic" },
+};
+
 int asoc_sdw_senary_dmic_rtd_init(struct snd_soc_pcm_runtime *rtd, struct snd_soc_dai *dai)
 {
 	struct snd_soc_card *card = rtd->card;
@@ -25,14 +29,21 @@ int asoc_sdw_senary_dmic_rtd_init(struct snd_soc_pcm_runtime *rtd, struct snd_so
 
 	component = dai->component;
 
-	ret = snd_soc_dapm_add_routes(dapm, senary_dmic_map,
-				      ARRAY_SIZE(senary_dmic_map));
+	if (component->name_prefix) {
+		ret = snd_soc_dapm_add_routes(dapm, senary_dmic_map,
+					      ARRAY_SIZE(senary_dmic_map));
+		mic_name = devm_kstrdup(card->dev, component->name_prefix, GFP_KERNEL);
+	} else {
+		dev_warn(card->dev, "sn624x dmic: component %s has no name_prefix\n",
+			 component->name);
+		ret = snd_soc_dapm_add_routes(dapm, senary_dmic_map_bare,
+					      ARRAY_SIZE(senary_dmic_map_bare));
+		mic_name = devm_kstrdup(card->dev, "sn624x", GFP_KERNEL);
+	}
 	if (ret) {
 		dev_err(card->dev, "senary dmic map addition failed: %d\n", ret);
 		return ret;
 	}
-
-	mic_name = devm_kasprintf(card->dev, GFP_KERNEL, "%s", component->name_prefix);
 	if (!mic_name)
 		return -ENOMEM;
 
diff --git a/sound/soc/sdw_utils/soc_sdw_senary_sdca.c b/sound/soc/sdw_utils/soc_sdw_senary_sdca.c
index 5c2cd7530..0adde845a 100644
--- a/sound/soc/sdw_utils/soc_sdw_senary_sdca.c
+++ b/sound/soc/sdw_utils/soc_sdw_senary_sdca.c
@@ -18,6 +18,10 @@ static const struct snd_soc_dapm_route sn624x_spk_map[] = {
 	{ "Speaker", NULL, "sn624x SPK" },
 };
 
+static const struct snd_soc_dapm_route sn624x_spk_map_bare[] = {
+	{ "Speaker", NULL, "SPK" },
+};
+
 /* Structure to map codec names to respective route arrays and sizes */
 struct codec_route_map {
 	const char *codec_name;
@@ -45,16 +49,30 @@ int asoc_sdw_senary_sdca_spk_rtd_init(struct snd_soc_pcm_runtime *rtd, struct sn
 	struct snd_soc_dapm_context *dapm = snd_soc_card_to_dapm(card);
 	int ret;
 
-	/* Match by DAI name prefix (e.g. sn624x-sdca-aif2). */
 	const struct codec_route_map *route_map = get_codec_route_map(dai->name);
+	const struct snd_soc_dapm_route *routes;
+	size_t nroutes;
 
 	if (!route_map) {
 		dev_err(rtd->dev, "failed to get codec name and route map\n");
 		return -EINVAL;
 	}
 
-	/* Add routes */
-	ret = snd_soc_dapm_add_routes(dapm, route_map->route_map, route_map->route_size);
+	/*
+	 * No name_prefix means the codec widgets were created as "SPK",
+	 * not "sn624x SPK". DAI name is still sn624x-sdca-aif2.
+	 */
+	if (!dai->component->name_prefix) {
+		dev_warn(rtd->dev, "sn624x spk: component %s has no name_prefix\n",
+			 dai->component->name);
+		routes = sn624x_spk_map_bare;
+		nroutes = ARRAY_SIZE(sn624x_spk_map_bare);
+	} else {
+		routes = route_map->route_map;
+		nroutes = route_map->route_size;
+	}
+
+	ret = snd_soc_dapm_add_routes(dapm, routes, nroutes);
 	if (ret)
 		dev_err(rtd->dev, "failed to add rt sdca spk map: %d\n", ret);
 
diff --git a/sound/soc/sdw_utils/soc_sdw_senary_sdca_jack_common.c b/sound/soc/sdw_utils/soc_sdw_senary_sdca_jack_common.c
index 1dab6f998..c61c1f160 100644
--- a/sound/soc/sdw_utils/soc_sdw_senary_sdca_jack_common.c
+++ b/sound/soc/sdw_utils/soc_sdw_senary_sdca_jack_common.c
@@ -57,6 +57,12 @@ static const struct snd_soc_dapm_route senary_sdca_jack_map[] = {
 	{ "sn624x MIC2", NULL, "Headset Mic" },
 };
 
+/* Widget names stay bare when codec_conf did not apply a name_prefix. */
+static const struct snd_soc_dapm_route senary_sdca_jack_map_bare[] = {
+	{ "Headphone", NULL, "HP" },
+	{ "MIC2", NULL, "Headset Mic" },
+};
+
 static struct snd_soc_jack_pin senary_sdca_jack_pins[] = {
 	{
 		.pin    = "Headphone",
@@ -68,10 +74,6 @@ static struct snd_soc_jack_pin senary_sdca_jack_pins[] = {
 	},
 };
 
-static const char * const need_sdca_suffix[] = {
-	"sn624x"
-};
-
 int asoc_sdw_senary_sdca_jack_rtd_init(struct snd_soc_pcm_runtime *rtd, struct snd_soc_dai *dai)
 {
 	struct snd_soc_card *card = rtd->card;
@@ -79,38 +81,41 @@ int asoc_sdw_senary_sdca_jack_rtd_init(struct snd_soc_pcm_runtime *rtd, struct s
 	struct asoc_sdw_mc_private *ctx = snd_soc_card_get_drvdata(card);
 	struct snd_soc_component *component;
 	struct snd_soc_jack *jack;
+	const struct snd_soc_dapm_route *routes = senary_sdca_jack_map;
+	const char *prefix;
+	int nroutes = ARRAY_SIZE(senary_sdca_jack_map);
 	int ret;
-	int i;
 
 	component = dai->component;
+	prefix = component->name_prefix;
+	/*
+	 * codec_conf should set name_prefix to "sn624x" before DAPM widgets
+	 * are created. If that match fails, name_prefix is NULL: strstr()
+	 * oopses, and the widgets keep the bare names from the codec driver.
+	 */
+	if (!prefix) {
+		dev_warn(card->dev,
+			 "sn624x jack: component %s has no name_prefix\n",
+			 component->name);
+		prefix = "sn624x";
+		routes = senary_sdca_jack_map_bare;
+		nroutes = ARRAY_SIZE(senary_sdca_jack_map_bare);
+	} else if (!strstr(prefix, "sn624x")) {
+		dev_err(card->dev, "%s is not supported\n", prefix);
+		return -EINVAL;
+	}
+
 	card->components = devm_kasprintf(card->dev, GFP_KERNEL,
-					  "%s hs:%s",
-					  card->components, component->name_prefix);
+					  "%s hs:%s-sdca",
+					  card->components, prefix);
 	if (!card->components)
 		return -ENOMEM;
 
-	for (i = 0; i < ARRAY_SIZE(need_sdca_suffix); i++) {
-		if (!strstr(component->name_prefix, need_sdca_suffix[i]))
-			continue;
-
-		card->components = devm_kasprintf(card->dev, GFP_KERNEL,
-						  "%s-sdca", card->components);
-		if (!card->components)
-			return -ENOMEM;
-
-		ret = snd_soc_dapm_add_routes(dapm, senary_sdca_jack_map,
-					      ARRAY_SIZE(senary_sdca_jack_map));
-		if (ret) {
-			dev_err(card->dev,
-				"senary sdca jack map addition failed: %d\n", ret);
-			return ret;
-		}
-		break;
-	}
-
-	if (i == ARRAY_SIZE(need_sdca_suffix)) {
-		dev_err(card->dev, "%s is not supported\n", component->name_prefix);
-		return -EINVAL;
+	ret = snd_soc_dapm_add_routes(dapm, routes, nroutes);
+	if (ret) {
+		dev_err(card->dev, "senary sdca jack map addition failed: %d\n",
+			ret);
+		return ret;
 	}
 
 	ret = snd_soc_card_jack_new_pins(rtd->card, "Headset Jack",

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

* RE: [PATCH v2] ASoC: sdw_utils: senary: handle a missing name_prefix
  2026-11-10  8:05 ` [PATCH v2] " Qianghua Wang
@ 2026-11-10 14:45   ` Liao, Bard
  2026-11-11  6:36     ` reply " qianghua.wang
  0 siblings, 1 reply; 5+ messages in thread
From: Liao, Bard @ 2026-11-10 14:45 UTC (permalink / raw)
  To: Qianghua Wang, Mark Brown
  Cc: linux-sound@vger.kernel.org, Liam Girdwood, Jaroslav Kysela,
	Takashi Iwai, Rojewski, Cezary, Peter Ujfalusi, Bard Liao,
	Kai Vehmanen, Pierre-Louis Bossart, bo liu



> -----Original Message-----
> From: Qianghua Wang <qianghua.wang@senarytech.com>
> Sent: Tuesday, November 10, 2026 4:06 PM
> To: Mark Brown <broonie@kernel.org>
> Cc: linux-sound@vger.kernel.org; Liam Girdwood <lgirdwood@gmail.com>;
> Jaroslav Kysela <perex@perex.cz>; Takashi Iwai <tiwai@suse.com>; Rojewski,
> Cezary <cezary.rojewski@intel.com>; Peter Ujfalusi
> <peter.ujfalusi@linux.intel.com>; Bard Liao <yung-chuan.liao@linux.intel.com>;
> Kai Vehmanen <kai.vehmanen@linux.intel.com>; Pierre-Louis Bossart <pierre-
> louis.bossart@linux.dev>; bo liu <bo.liu@senarytech.com>; Qianghua Wang
> <qianghua.wang@senarytech.com>
> Subject: [PATCH v2] ASoC: sdw_utils: senary: handle a missing name_prefix
> 
> asoc_sdw_senary_sdca_jack_rtd_init() passes component->name_prefix to
> strstr(). When codec_conf does not apply the prefix, name_prefix is
> NULL and card registration oopses.

In what case will codec_conf not apply the prefix?
Won't it be better to ensure that the name_prefix is always set?



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

* reply [PATCH v2] ASoC: sdw_utils: senary: handle a missing name_prefix
  2026-11-10 14:45   ` Liao, Bard
@ 2026-11-11  6:36     ` qianghua.wang
  0 siblings, 0 replies; 5+ messages in thread
From: qianghua.wang @ 2026-11-11  6:36 UTC (permalink / raw)
  To: 'Liao, Bard', 'Mark Brown'
  Cc: linux-sound, 'Liam Girdwood', 'Jaroslav Kysela',
	'Takashi Iwai', 'Rojewski, Cezary',
	'Peter Ujfalusi', 'Bard Liao',
	'Kai Vehmanen', 'Pierre-Louis Bossart',
	'bo liu'

Hi Bard,
	Thanks for the review. I agree the right fix is to ensure
name_prefix is set via codec_conf / component probe, not to paper over NULL
in sdw_utils.
The v2 follow-up was based on debug logs and instrumentation from jfdnet, a
community contributor on GitHub issue #6012. We have not reproduced this on
SN6245 hardware ourselves yet (SN6244 only in our lab).
Please hold off on reviewing or merging
[PATCH v2] ASoC: sdw_utils: senary: handle a missing name_prefix until we
have the same hardware and can test and align the fix locally. 
I will follow up after that.
Thanks,
Qianghua Wang

From: Liao, Bard <bard.liao@intel.com> 
Sent: 2026年11月10日 22:45
To: Qianghua Wang <qianghua.wang@senarytech.com>; Mark Brown
<broonie@kernel.org>
cc: linux-sound@vger.kernel.org; Liam Girdwood <lgirdwood@gmail.com>;
Jaroslav Kysela <perex@perex.cz>; Takashi Iwai <tiwai@suse.com>; Rojewski,
Cezary <cezary.rojewski@intel.com>; Peter Ujfalusi
<peter.ujfalusi@linux.intel.com>; Bard Liao
<yung-chuan.liao@linux.intel.com>; Kai Vehmanen
<kai.vehmanen@linux.intel.com>; Pierre-Louis Bossart
<pierre-louis.bossart@linux.dev>; bo liu <bo.liu@senarytech.com>
Subject: RE: [PATCH v2] ASoC: sdw_utils: senary: handle a missing
name_prefix

> -----Original Message-----
> From: Qianghua Wang <qianghua.wang@senarytech.com>
> Sent: Tuesday, November 10, 2026 4:06 PM
> To: Mark Brown <broonie@kernel.org>
> Cc: linux-sound@vger.kernel.org; Liam Girdwood <lgirdwood@gmail.com>; 
> Jaroslav Kysela <perex@perex.cz>; Takashi Iwai <tiwai@suse.com>; 
> Rojewski, Cezary <cezary.rojewski@intel.com>; Peter Ujfalusi 
> <peter.ujfalusi@linux.intel.com>; Bard Liao 
> <yung-chuan.liao@linux.intel.com>;
> Kai Vehmanen <kai.vehmanen@linux.intel.com>; Pierre-Louis Bossart 
> <pierre- louis.bossart@linux.dev>; bo liu <bo.liu@senarytech.com>; 
> Qianghua Wang <qianghua.wang@senarytech.com>
> Subject: [PATCH v2] ASoC: sdw_utils: senary: handle a missing 
> name_prefix
> 
> asoc_sdw_senary_sdca_jack_rtd_init() passes component->name_prefix to 
> strstr(). When codec_conf does not apply the prefix, name_prefix is 
> NULL and card registration oopses.

In what case will codec_conf not apply the prefix?
Won't it be better to ensure that the name_prefix is always set?




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

end of thread, other threads:[~2026-11-11  6:37 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-10  7:34 [PATCH] ASoC: sdw_utils: senary: handle a missing name_prefix Qianghua Wang
2026-11-10  7:44 ` sashiko-bot
2026-11-10  8:05 ` [PATCH v2] " Qianghua Wang
2026-11-10 14:45   ` Liao, Bard
2026-11-11  6:36     ` reply " qianghua.wang

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