diff options
| author | Peter Ujfalusi <peter.ujfalusi@linux.intel.com> | 2026-10-08 12:01:30 +0300 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-10-08 11:38:29 +0200 |
| commit | 746de48c3a250f0c264105dcbfcdf0c5001e970b (patch) | |
| tree | c2a1ea3ee0e4179591bf02df0e362dc996207996 /tools/lib/python/kdoc/python_version.py | |
| parent | 9ca0d0d0249230135dbf6fa1b9168e260151babc (diff) | |
| download | linux-next-746de48c3a250f0c264105dcbfcdf0c5001e970b.tar.gz linux-next-746de48c3a250f0c264105dcbfcdf0c5001e970b.zip | |
ASoC: SOF: ipc4-topology: Fix shift-out-of-bounds for aggregated ALH capture
When ch_count is smaller than blob->alh_cfg.device_count (e.g. a mono
capture stream, such as a SmartMic, aggregated across multiple SDW
links), step = ch_count / blob->alh_cfg.device_count truncates to 0.
The subsequent GENMASK(step - 1, 0) then underflows step - 1 (u32) to
UINT_MAX, causing GENMASK()'s internal shift to use an out-of-bounds
exponent:
UBSAN: shift-out-of-bounds in sound/soc/sof/ipc4-topology.c:2363:13
shift exponent 18446744069414584384 is too large for 64-bit type 'long unsigned int'
Treat ch_count < device_count the same way as the existing "channels
equal to output reference channels" case: apply the same ch_mask to
every aggregated device instead of trying to split channels that
can't be evenly divided.
Fixes: 0390a102cc18 ("ASoC: SOF: ipc4-topology: use different channel mask for each sdw amp feedback")
Cc: stable@vger.kernel.org
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://patch.msgid.link/20261008090130.15135-1-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'tools/lib/python/kdoc/python_version.py')
0 files changed, 0 insertions, 0 deletions
