Skip to content

Commit 5e462fa

Browse files
roxellgregkh
authored andcommitted
dmaengine: ti: edma: Fix memory allocation size for queue_priority_map
[ Upstream commit e63419d ] Fix a critical memory allocation bug in edma_setup_from_hw() where queue_priority_map was allocated with insufficient memory. The code declared queue_priority_map as s8 (*)[2] (pointer to array of 2 s8), but allocated memory using sizeof(s8) instead of the correct size. This caused out-of-bounds memory writes when accessing: queue_priority_map[i][0] = i; queue_priority_map[i][1] = i; The bug manifested as kernel crashes with "Oops - undefined instruction" on ARM platforms (BeagleBoard-X15) during EDMA driver probe, as the memory corruption triggered kernel hardening features on Clang. Change the allocation to use sizeof(*queue_priority_map) which automatically gets the correct size for the 2D array structure. Fixes: 2b6b3b7 ("ARM/dmaengine: edma: Merge the two drivers under drivers/dma/") Signed-off-by: Anders Roxell <anders.roxell@linaro.org> Link: https://lore.kernel.org/r/20250830094953.3038012-1-anders.roxell@linaro.org Signed-off-by: Vinod Koul <vkoul@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent 25e6146 commit 5e462fa

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

drivers/dma/ti/edma.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2072,8 +2072,8 @@ static int edma_setup_from_hw(struct device *dev, struct edma_soc_info *pdata,
20722072
* priority. So Q0 is the highest priority queue and the last queue has
20732073
* the lowest priority.
20742074
*/
2075-
queue_priority_map = devm_kcalloc(dev, ecc->num_tc + 1, sizeof(s8),
2076-
GFP_KERNEL);
2075+
queue_priority_map = devm_kcalloc(dev, ecc->num_tc + 1,
2076+
sizeof(*queue_priority_map), GFP_KERNEL);
20772077
if (!queue_priority_map)
20782078
return -ENOMEM;
20792079

0 commit comments

Comments
 (0)