All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Mark Brown <broonie@kernel.org>
Cc: Emanuele Ghidoli <ghidoliemanuele@gmail.com>,
	Liam Girdwood <lgirdwood@gmail.com>,
	Emanuele Ghidoli <emanuele.ghidoli@toradex.com>,
	Kees Cook <kees@kernel.org>,
	"Gustavo A. R. Silva" <gustavoars@kernel.org>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
	linux-sound@vger.kernel.org, linux-hardening@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] ASoC: soc-core: reset rtd->num_components after allocation
Date: Tue, 10 Nov 2026 12:47:54 +0100	[thread overview]
Message-ID: <87pkwcvrf9.wl-tiwai@suse.de> (raw)
In-Reply-To: <87bj7yw9e2.wl-tiwai@suse.de>

On Mon, 09 Nov 2026 12:07:33 +0100,
Takashi Iwai wrote:
> 
> On Mon, 09 Nov 2026 11:25:20 +0100,
> Emanuele Ghidoli wrote:
> On Mon, 09 Nov 2026 11:25:20 +0100,
> Emanuele Ghidoli wrote:
> > 
> > From: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
> > 
> > 
> > Commit 4dd10fbbeb9c ("treewide: Convert devm_kmalloc() family to the
> > devm_kmalloc_obj() family") switched the snd_soc_pcm_runtime allocation
> > in soc_new_pcm_runtime() to devm_kzalloc_flex(). components[] is
> > annotated with __counted_by(num_components), so when the compiler
> > provides __builtin_counted_by_ref() the allocation now also sets
> > rtd->num_components to the number of allocated slots.
> > 
> > snd_soc_rtd_add_component() fills components[] one entry at a time and
> > expects num_components to start at zero. Starting from the allocated
> > size, for_each_rtd_components() stops at the first, still NULL, entry,
> > so the runtime has no components: they are not probed, no controls or
> > user-visible PCM devices are created and the card registers empty,
> > without any error message. In addition, each added component is stored
> > past the end of components[]. On the tested board these stores still
> > land in the slack of the kmalloc bucket that devres rounds the
> > allocation up to, so KASAN does not report them.
> > 
> > Reset num_components after the allocation.
> > 
> > Seen on a Colibri iMX7D (simple-audio-card, fsl-sai, sgtl5000): the card
> > is listed in /proc/asound/cards, but /proc/asound/pcm is empty and
> > 
> >   amixer: Unable to find simple control 'Capture Mux',0
> >   aplay: main:850: audio open error: No such file or directory
> > 
> > Tested on that board with v7.4-rc2 built with GCC 15.2 (first seen with
> > GCC 16.2): the failure is there without this change; with it, playback,
> > capture and the codec controls work again.
> > 
> > The root cause analysis, this change and the testing were done with the
> > help of an AI coding assistant (Claude Code, Claude Opus 5.5).
> > 
> > Fixes: 4dd10fbbeb9c ("treewide: Convert devm_kmalloc() family to the devm_kmalloc_obj() family")
> > Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
> > ---
> > 4dd10fbbeb9c only reached mainline in v7.4-rc2 (not in broonie/sound yet),
> > so this is based on v7.4-rc2.
> > 
> > The other devm_k[mz]alloc_flex() sites added by 4dd10fbbeb9c were checked
> > too: none of them fills a __counted_by() counter one entry at a time, so
> > this one looks like the only user hit by the preset counter.
> 
> I guess a bugzilla entry that was reported recently is also related
> with this problem.
>   https://bugzilla.kernel.org/show_bug.cgi?id=222249
> 
> My first gut feeling was that it might be safer to revert the use of
> devm_kmalloc_flex() in that code, as it has a significant side-effect
> unlike other straight conversions.  But, if this fix covers well, we
> can go with this fix, of course.

And it seems working for the bugzilla issue above, too.

Mark, could you pick this up quickly?  It looks like a severe
regression.

Reviewed-by: Takashi Iwai <tiwai@suse.de>
Link: https://bugzilla.kernel.org/show_bug.cgi?id=222249


thanks,

Takashi

  reply	other threads:[~2026-11-10 11:47 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-09 10:25 [PATCH] ASoC: soc-core: reset rtd->num_components after allocation Emanuele Ghidoli
2026-11-09 11:07 ` Takashi Iwai
2026-11-10 11:47   ` Takashi Iwai [this message]
2026-11-11  5:50   ` Kees Cook
2026-11-11  5:59     ` Kees Cook
2026-11-11 10:28       ` Emanuele Ghidoli
2026-11-12 17:27         ` Kees Cook
2026-11-11 13:09       ` Mark Brown
2026-11-12 17:33         ` Kees Cook
2026-11-10  9:57 ` Jan Remes
2026-11-10 17:45 ` Mark Brown
2026-11-11 10:06 ` Alexander Stein
2026-11-11 12:26 ` Cosmin-Gabriel Tanislav
  -- strict thread matches above, loose matches on Subject: below --
2026-11-10 22:01 Rujbin

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=87pkwcvrf9.wl-tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=broonie@kernel.org \
    --cc=emanuele.ghidoli@toradex.com \
    --cc=ghidoliemanuele@gmail.com \
    --cc=gustavoars@kernel.org \
    --cc=kees@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-hardening@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=perex@perex.cz \
    --cc=tiwai@suse.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.