Commit 5d2b6db7 authored by Pierre-Louis Bossart's avatar Pierre-Louis Bossart Committed by Yongqiang Liu
Browse files

soundwire: cadence: fix invalid PDI offset

mainline inclusion
from mainline-v6.10-rc1
commit 8ee1b439b1540ae543149b15a2a61b9dff937d91
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IA7D3E
CVE: CVE-2024-38635

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8ee1b439b1540ae543149b15a2a61b9dff937d91



--------------------------------------------------------

For some reason, we add an offset to the PDI, presumably to skip the
PDI0 and PDI1 which are reserved for BPT.

This code is however completely wrong and leads to an out-of-bounds
access. We were just lucky so far since we used only a couple of PDIs
and remained within the PDI array bounds.

A Fixes: tag is not provided since there are no known platforms where
the out-of-bounds would be accessed, and the initial code had problems
as well.

A follow-up patch completely removes this useless offset.

Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: default avatarRander Wang <rander.wang@intel.com>
Signed-off-by: default avatarBard Liao <yung-chuan.liao@linux.intel.com>
Link: https://lore.kernel.org/r/20240326090122.1051806-2-yung-chuan.liao@linux.intel.com


Signed-off-by: default avatarVinod Koul <vkoul@kernel.org>
Signed-off-by: default avatarZhang Zekun <zhangzekun11@huawei.com>
Signed-off-by: default avatarYongqiang Liu <liuyongqiang13@huawei.com>
parent 5028521f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1698,7 +1698,7 @@ struct sdw_cdns_pdi *sdw_cdns_alloc_pdi(struct sdw_cdns *cdns,

	/* check if we found a PDI, else find in bi-directional */
	if (!pdi)
		pdi = cdns_find_pdi(cdns, 2, stream->num_bd, stream->bd,
		pdi = cdns_find_pdi(cdns, 0, stream->num_bd, stream->bd,
				    dai_id);

	if (pdi) {