Hi Salvatore,

thanks a lot for the quick reply.

It really is an upstream problem. It works with the upstream 6.12.113 kernel but fails with 6.12.115.

I dissected it and only built about 10 kernels, haven't done this in years ;)

output of last 'git bisect bad':

---
81e4b0009f2acc841d77a24fd796528b0bf62c4e is the first bad commit
commit 81e4b0009f2acc841d77a24fd796528b0bf62c4e (HEAD)
Author: Edward Adam Davis <[email protected]>
Date:   Tue Jan 13 16:29:23 2026 +0800

    ALSA: usb-audio: Prevent excessive number of frames

    [ Upstream commit ef5749ef8b307bf8717945701b1b79d036af0a15 ]

    In this case, the user constructed the parameters with maxpacksize 40
for rate 22050 / pps 1000, and packsize[0] 22 packsize[1] 23. The buffer
    size for each data URB is maxpacksize * packets, which in this example
    is 40 * 6 = 240; When the user performs a write operation to send audio
    data into the ALSA PCM playback stream, the calculated number of frames
    is packsize[0] * packets = 264, which exceeds the allocated URB buffer
    size, triggering the out-of-bounds (OOB) issue reported by syzbot [1].

    Added a check for the number of single data URB frames when calculating
    the number of frames to prevent [1].

    [1]
BUG: KASAN: slab-out-of-bounds in copy_to_urb+0x261/0x460 sound/usb/pcm.c:1487
    Write of size 264 at addr ffff88804337e800 by task syz.0.17/5506
    Call Trace:
     copy_to_urb+0x261/0x460 sound/usb/pcm.c:1487
     prepare_playback_urb+0x953/0x13d0 sound/usb/pcm.c:1611
     prepare_outbound_urb+0x377/0xc50 sound/usb/endpoint.c:333

    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=6db0415d6d5c635f72cb
    Tested-by: [email protected]
    Signed-off-by: Edward Adam Davis <[email protected]>
Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 sound/usb/pcm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
---

output of 'git bisect log':

---
git bisect start
# Status: warte auf guten und schlechten Commit
# good: [7fdb7c1824a1f9979d648d7ae28ac446bcee9c6e] Linux 6.12.113
git bisect good 7fdb7c1824a1f9979d648d7ae28ac446bcee9c6e
# Status: warte auf schlechten Commit, 1 guter Commit bekannt
# bad: [03bae623ec326c2738198739625832aab0eb120a] Linux 6.12.115
git bisect bad 03bae623ec326c2738198739625832aab0eb120a
# bad: [9afcfc4c6597547c20d6354fa68f1d6012e31c0e] wifi: iwlwifi: dvm: pair transport op-mode enter/leave
git bisect bad 9afcfc4c6597547c20d6354fa68f1d6012e31c0e
# bad: [33201705179d94985c788ae9186ceeab044fb6bd] ceph: Remove uses of page from ceph_process_folio_batch()
git bisect bad 33201705179d94985c788ae9186ceeab044fb6bd
# good: [39870dbccdea99e1aa0ae445ab913748e912a352] ASoC: Intel: avs: Use topology information for endpoint numbers
git bisect good 39870dbccdea99e1aa0ae445ab913748e912a352
# bad: [58a4c2dbe6f746cdf9ea06fcaeda535aecb4b80b] bnxt_en: Update firmware interface spec to 1.10.3.85
git bisect bad 58a4c2dbe6f746cdf9ea06fcaeda535aecb4b80b
# good: [20b3c72c1b83054c568d2322a95e217fdc281bc3] bpf: Mark bpf_refcount field as unique
git bisect good 20b3c72c1b83054c568d2322a95e217fdc281bc3
# bad: [4eca06a55417c3b2e538656d12c89e224343653e] bpf: Fix exception exit lock checking for subprogs
git bisect bad 4eca06a55417c3b2e538656d12c89e224343653e
# bad: [f8b8ec0ddde74066d4452a7a961da544f193e00f] riscv: trace: fix snapshot deadlock with sbi ecall
git bisect bad f8b8ec0ddde74066d4452a7a961da544f193e00f
# good: [f32ae3cfc976074e9c5927893ce49bcf12f53748] idpf: fix error handling in the init_task on load
git bisect good f32ae3cfc976074e9c5927893ce49bcf12f53748
# good: [d1e9614a142eff34c93e94a15a71ad0e806799c4] virtio_net: Fix misalignment bug in struct virtnet_info
git bisect good d1e9614a142eff34c93e94a15a71ad0e806799c4
# bad: [81e4b0009f2acc841d77a24fd796528b0bf62c4e] ALSA: usb-audio: Prevent excessive number of frames
git bisect bad 81e4b0009f2acc841d77a24fd796528b0bf62c4e
# first bad commit: [81e4b0009f2acc841d77a24fd796528b0bf62c4e] ALSA: usb-audio: Prevent excessive number of frames
---

I hope this helps!

Best regards
Benjamin

Am 03.11.26 um 17:13 schrieb Salvatore Bonaccorso:
Control: tags -1 + moreinfo upstream

Hi Benjamin,

On Mon, Nov 02, 2026 at 10:14:00PM +0100, Benjamin Scherrer wrote:
Package: src:linux
Version: 6.12.115-2
Severity: normal
X-Debbugs-Cc: [email protected]

Dear Maintainer,

I am experiencing a reproducible USB audio regression with a MOTU M4 interface
on current Debian 13.

The interface has worked reliably for years. After rebooting into kernel
6.12.115+deb13.1-amd64, audio playback stopped working.

Booting the same system with kernel 6.12.113 restores normal operation. No
other configuration changes were made.

Sorry about the breakage with the security update needed. As you can
cleary identify when system is regression, could you please bisect the
changes between 6.12.113 and 6.12.115 upstream with the following
procedure to identify the culprit please?

     git clone --single-branch -b linux-6.12.y 
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
     cd linux-stable
     git checkout v6.12.113
     cp /boot/config-$(uname -r) .config
     yes '' | make localmodconfig
     make savedefconfig
     mv defconfig arch/x86/configs/my_defconfig

     # test 6.12.113 to ensure this is "good"
     make my_defconfig
     make -j $(nproc) bindeb-pkg
     ... install the resulting .deb package and confirm problem does not exist

     # test 6.12.115 to ensure this is "bad"
     git checkout v6.12.35
     make my_defconfig
     make -j $(nproc) bindeb-pkg
     ... install the resulting .deb package and confirm problem exists

With that confirmed, the bisection can start:

     git bisect start
     git bisect good v6.12.113
     git bisect bad v6.12.115

In each bisection step git checks out a state between the oldest
known-bad and the newest known-good commit. In each step test using:

     make my_defconfig
     make -j $(nproc) bindeb-pkg
     ... install, verify if problem exists

and if the problem is hit run:

     git bisect bad

and if the problem doesn't trigger run:

     git bisect good

. Please pay attention to always select the just built kernel for
booting, it won't always be the default kernel picked up by grub.

Iterate until git announces to have identified the first bad commit.

Then provide the output of

     git bisect log

In the course of the bisection you might have to uninstall previous
kernels again to not exhaust the disk space in /boot. Also in the end
uninstall all self-built kernels again.

Regards,
Salvatore


Reply via email to