Archive-only list for patches
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: patches@lists.linux.dev, stable@vger.kernel.org
Cc: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Bard Liao <yung-chuan.liao@linux.intel.com>,
	Ranjani Sridharan <ranjani.sridharan@linux.intel.com>,
	Liam Girdwood <liam.r.girdwood@intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Mark Brown <broonie@kernel.org>, Sasha Levin <sashal@kernel.org>,
	lgirdwood@gmail.com, linux-sound@vger.kernel.org
Subject: [PATCH AUTOSEL 5.15 33/44] ASoC: core: Check for rtd == NULL in snd_soc_remove_pcm_runtime()
Date: Sun,  3 Aug 2025 20:38:38 -0400	[thread overview]
Message-ID: <20250804003849.3627024-33-sashal@kernel.org> (raw)
In-Reply-To: <20250804003849.3627024-1-sashal@kernel.org>

From: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>

[ Upstream commit 2d91cb261cac6d885954b8f5da28b5c176c18131 ]

snd_soc_remove_pcm_runtime() might be called with rtd == NULL which will
leads to null pointer dereference.
This was reproduced with topology loading and marking a link as ignore
due to missing hardware component on the system.
On module removal the soc_tplg_remove_link() would call
snd_soc_remove_pcm_runtime() with rtd == NULL since the link was ignored,
no runtime was created.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Liam Girdwood <liam.r.girdwood@intel.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Link: https://patch.msgid.link/20250619084222.559-3-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---

LLM Generated explanations, may be completely bogus:

**YES**

This commit should be backported to stable kernel trees. The analysis
reveals this is a critical NULL pointer dereference fix that prevents
kernel crashes.

**Key reasons for backporting:**

1. **Fixes a Real Crash**: The commit adds a NULL check to prevent a
   kernel panic that occurs when `snd_soc_remove_pcm_runtime()` is
   called with `rtd == NULL`. The code change shows this clearly:
```c
+   if (!rtd)
+       return;
```
Without this check, the subsequent line
`snd_soc_card_remove_dai_link(card, rtd->dai_link)` would dereference
NULL.

2. **Minimal and Safe Fix**: The change is extremely small (3 lines) and
   defensive - it simply adds a NULL check with early return. This
   follows the stable kernel rule of minimal, contained fixes.

3. **Affects Production Systems**: The commit message indicates this
   occurs during topology loading when hardware components are missing -
   a real-world scenario. The issue manifests on module removal when
   `soc_tplg_remove_link()` calls the function with NULL.

4. **Well-Reviewed**: The commit has 5 Reviewed-by tags from Intel ASoC
   maintainers, indicating thorough review and consensus on the fix.

5. **No Side Effects**: The fix has no architectural changes or new
   features - it purely adds defensive programming to prevent crashes.
   The function already had EXPORT_SYMBOL_GPL, indicating it's part of
   the kernel API that could be called from various contexts.

This is exactly the type of commit stable trees want: a small, obvious
fix for a real crash scenario with no risk of regression.

 sound/soc/soc-core.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 1c4d8b96f77b..d28261ef1d4c 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -959,6 +959,9 @@ static int soc_dai_link_sanity_check(struct snd_soc_card *card,
 void snd_soc_remove_pcm_runtime(struct snd_soc_card *card,
 				struct snd_soc_pcm_runtime *rtd)
 {
+	if (!rtd)
+		return;
+
 	lockdep_assert_held(&client_mutex);
 
 	/* release machine specific resources */
-- 
2.39.5


  parent reply	other threads:[~2025-08-04  0:40 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-04  0:38 [PATCH AUTOSEL 5.15 01/44] usb: xhci: print xhci->xhc_state when queue_command failed Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 02/44] cpufreq: CPPC: Mark driver with NEED_UPDATE_LIMITS flag Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 03/44] selftests/futex: Define SYS_futex on 32-bit architectures with 64-bit time_t Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 04/44] usb: typec: ucsi: psy: Set current max to 100mA for BC 1.2 and Default Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 05/44] regulator: core: repeat voltage setting request for stepped regulators Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 06/44] usb: xhci: Avoid showing warnings for dying controller Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 07/44] usb: xhci: Set avg_trb_len = 8 for EP0 during Address Device Command Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 08/44] usb: xhci: Avoid showing errors during surprise removal Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 09/44] gpio: wcd934x: check the return value of regmap_update_bits() Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 10/44] cpufreq: Exit governor when failed to start old governor Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 11/44] ARM: rockchip: fix kernel hang during smp initialization Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 12/44] PM / devfreq: governor: Replace sscanf() with kstrtoul() in set_freq_store() Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 13/44] EDAC/synopsys: Clear the ECC counters on init Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 14/44] ASoC: soc-dapm: set bias_level if snd_soc_dapm_set_bias_level() was successed Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 15/44] thermal/drivers/qcom-spmi-temp-alarm: Enable stage 2 shutdown when required Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 16/44] tools/nolibc: define time_t in terms of __kernel_old_time_t Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 17/44] gpio: tps65912: check the return value of regmap_update_bits() Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 18/44] ARM: tegra: Use I/O memcpy to write to IRAM Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 19/44] selftests: tracing: Use mutex_unlock for testing glob filter Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 20/44] ACPI: PRM: Reduce unnecessary printing to avoid user confusion Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 21/44] PM: runtime: Clear power.needs_force_resume in pm_runtime_reinit() Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 22/44] thermal: sysfs: Return ENODATA instead of EAGAIN for reads Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 23/44] PM: sleep: console: Fix the black screen issue Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 24/44] ACPI: processor: fix acpi_object initialization Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 25/44] mmc: sdhci-msm: Ensure SD card power isn't ON when card removed Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 26/44] ACPI: APEI: GHES: add TAINT_MACHINE_CHECK on GHES panic path Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 27/44] pps: clients: gpio: fix interrupt handling order in remove path Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 28/44] reset: brcmstb: Enable reset drivers for ARCH_BCM2835 Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 29/44] mmc: rtsx_usb_sdmmc: Fix error-path in sd_set_power_mode() Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 30/44] x86/bugs: Avoid warning when overriding return thunk Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 31/44] ASoC: hdac_hdmi: Rate limit logging on connection and disconnection Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 32/44] ALSA: intel8x0: Fix incorrect codec index usage in mixer for ICH4 Sasha Levin
2025-08-04  0:38 ` Sasha Levin [this message]
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 34/44] usb: typec: intel_pmc_mux: Defer probe if SCU IPC isn't present Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 35/44] usb: core: usb_submit_urb: downgrade type check Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 36/44] usb: typec: fusb302: fix scheduling while atomic when using virtio-gpio Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 37/44] pm: cpupower: Fix the snapshot-order of tsc,mperf, clock in mperf_stop() Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 38/44] platform/x86: thinkpad_acpi: Handle KCOV __init vs inline mismatches Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 39/44] platform/chrome: cros_ec_typec: Defer probe on missing EC parent Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 40/44] ALSA: hda/ca0132: Fix buffer overflow in add_tuning_control Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 41/44] ALSA: pcm: Rewrite recalculate_boundary() to avoid costly loop Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 42/44] ALSA: usb-audio: Avoid precedence issues in mixer_quirks macros Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 43/44] iio: adc: ad7768-1: Ensure SYNC_IN pulse minimum timing requirement Sasha Levin
2025-08-04  0:38 ` [PATCH AUTOSEL 5.15 44/44] ASoC: codecs: rt5640: Retry DEVICE_ID verification Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250804003849.3627024-33-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=broonie@kernel.org \
    --cc=kai.vehmanen@linux.intel.com \
    --cc=lgirdwood@gmail.com \
    --cc=liam.r.girdwood@intel.com \
    --cc=linux-sound@vger.kernel.org \
    --cc=patches@lists.linux.dev \
    --cc=peter.ujfalusi@linux.intel.com \
    --cc=ranjani.sridharan@linux.intel.com \
    --cc=stable@vger.kernel.org \
    --cc=yung-chuan.liao@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox