]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
soundwire: cadence: fix invalid PDI offset
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Tue, 26 Mar 2024 09:01:16 +0000 (09:01 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 16 Jun 2024 11:39:34 +0000 (13:39 +0200)
[ Upstream commit 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: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Signed-off-by: Bard 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: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/soundwire/cadence_master.c

index 7b340f3832133b969251883fdc258fdb2e4cb65e..fb37e14404ec856f18fe0fe5ddabc4fe9d27bdfb 100644 (file)
@@ -1830,7 +1830,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) {