Confirming this is still present on a much newer kernel, with additional
detail that may help narrow down the cause.

**System:** Lenovo N42-20 Chromebook, MrChromebox UEFI Full ROM firmware
(coreboot), DMI board name "GOOGLE Reks" — same board as the original
report.

**Kernel:** 7.0.0-30-generic (Linux Mint, Ubuntu 24.04 base) — so this
is not specific to the 6.8.x kernel series, it's still present in
current mainline-derived kernels.

**Symptom:** Audio plays normally for roughly 5-10 minutes (reproducible
faster with `speaker-test -D hw:rt5650 -c 2 -t sine`, which typically
fails within ~30 seconds), then playback locks into a continuous single
tone that persists until the playing application is paused/stopped:

```
Write error: -5,Input/output error
xrun_recovery failed: -5,Input/output error
Transfer failed: Input/output error
```

**At boot**, before any playback issue occurs, dmesg shows the same
UBSAN shift-out-of-bounds traces reported here, in `soc-dapm.c` during
`cht-bsw-rt5645` / `snd_soc_sst_cht_bsw_rt5645` probe and during
`alsactl`'s subsequent mixer writes:

```
UBSAN: shift-out-of-bounds in .../sound/soc/soc-dapm.c:429:15
shift exponent 16384 is too large for 32-bit type 'unsigned int'
Call Trace:
 dapm_add_path.cold+0x1f/0x6c [snd_soc_core]
 snd_soc_dapm_add_route+0x373/0x660 [snd_soc_core]
 ...
 snd_cht_mc_probe+0x499/0x840 [snd_soc_sst_cht_bsw_rt5645]
```

plus further UBSAN hits in `snd_soc_dapm_put_volsw` triggered by
`alsactl` via `snd_ctl_elem_write`/`snd_ctl_ioctl`.

Also worth noting: the firmware/topology ABI versions don't match exactly:
```
sof-audio-acpi-intel-byt 808622A8:00: Firmware: ABI 3:22:1 Kernel ABI 3:23:1
sof-audio-acpi-intel-byt 808622A8:00: Topology: ABI 3:22:1 Kernel ABI 3:23:1
```
This ABI drift between the kernel's SOF core and the shipped 
`sof-cht-rt5645.tplg`/firmware seems like a plausible source of the corrupted 
register value that produces the out-of-range shift, though I can't confirm 
that's the actual root cause.

**Attempted workarounds (neither resolved it):**

1. `snd_intel_dspcfg.dsp_driver=1` kernel boot parameter to force the legacy 
(non-SOF) driver — on this kernel it's ignored outright:
   ```
   intel_sst_acpi 808622A8:00: dsp_driver parameter 1 not supported, using 
automatic detection
   sof-audio-acpi-intel-byt 808622A8:00: dsp_driver parameter 1 not supported, 
using automatic detection
   ```
2. Blacklisting all `snd_sof*` modules to force the legacy stack. This 
successfully prevents SOF from loading at all, and the RT5645 codec driver 
still probes fine over I2C (`rt5645 i2c-10EC5650:00: Detected Google Chrome 
platform`), but the `snd_soc_sst_cht_bsw_rt5645` machine driver never binds — 
even after manually `modprobe`-ing it, no sound card is created (`aplay -l` 
shows only HDMI outputs, no rt5650 card). It appears the platform device this 
driver needs is normally only instantiated as a byproduct of the SOF ACPI 
driver's own matching, and nothing else on this board creates it, so 
blacklisting SOF results in no usable audio device at all rather than falling 
back cleanly to the legacy stack.

Given both workaround paths are closed off, this does look like it needs
an actual fix in the topology/DAPM parsing path (or a DMI quirk enabling
proper legacy fallback on this board) rather than something resolvable
via boot parameters or module blacklisting.

Happy to test patches, provide additional logs (`alsa-info.sh`, full
`dmesg`, `acpidump`), or run bisection if that would help.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2092985

Title:
  UBSAN: Shift-Out-of-Bounds in soc-dapm.c (Linux Kernel 6.8.0 on Ubuntu
  24.04)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2092985/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to