Hi, On Thu, Nov 05, 2026 at 08:58:13PM +0000, Wolle Hartz wrote: > Exactly, the problem occurs with Linux Mint Debian Edition 7 when I > run "apt update && apt full-upgrade"" on a fresh install. Kernel > 6.12.115 gets installed, and the audio interface can no longer be > used. I'm currently using the Trixie backports and have a 7.x > kernel.
>From which version did you update, which was the last one in the 6.12.y series which worked? I suspect this is the same as #1152888, but we need those details first. Additionally can you please test with debian/bin/test-patches approach the 6.12.115-2 plus the attached patch on top to verify it fixes the issue as well for you? Regards, Salvatore
From: Takashi Iwai <[email protected]> Date: Wed, 21 Jan 2026 09:20:20 +0100 Subject: ALSA: usb-audio: Use the right limit for PCM OOB check Origin: https://git.kernel.org/linus/70b4db7d258118a7464f039112a74ddb49a95b06 Bug-Debian: https://bugs.debian.org/1152888 The recent fix commit for addressing the OOB access of PCM URB data buffer caused a regression on Behringer UMC2020HD device, resulting in choppy sound. The fix used ep->max_urb_frames for the upper limit check, and this is no right value to be referred. Use the actual buffer size (ctx->buffer_size) as the upper limit instead, which also avoids the regression on the device above. Fixes: ef5749ef8b30 ("ALSA: usb-audio: Prevent excessive number of frames") Link: https://bugzilla.kernel.org/show_bug.cgi?id=220997 Link: https://patch.msgid.link/[email protected] Signed-off-by: Takashi Iwai <[email protected]> [ sashal: Backport differs from upstream only in indentation, since the for loop sits one block shallower in this tree; the changed lines are otherwise identical. ] Signed-off-by: Sasha Levin <[email protected]> --- sound/usb/pcm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c index 3a4666e3bf277..5aadd1221f725 100644 --- a/sound/usb/pcm.c +++ b/sound/usb/pcm.c @@ -1505,7 +1505,8 @@ static int prepare_playback_urb(struct snd_usb_substream *subs, for (i = 0; i < ctx->packets; i++) { counts = snd_usb_endpoint_next_packet_size(ep, ctx, i, avail); - if (counts < 0 || frames + counts >= ep->max_urb_frames) + if (counts < 0 || + (frames + counts) * stride > ctx->buffer_size) break; /* set up descriptor */ urb->iso_frame_desc[i].offset = frames * stride; -- 2.53.0

