mirror of https://github.com/torvalds/linux.git
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:
|
||
|---|---|---|
| .. | ||
| Kconfig | ||
| Makefile | ||
| cppi41.c | ||
| dma-crossbar.c | ||
| edma.c | ||
| k3-psil-am62.c | ||
| k3-psil-am62a.c | ||
| k3-psil-am62p.c | ||
| k3-psil-am64.c | ||
| k3-psil-am654.c | ||
| k3-psil-j721e.c | ||
| k3-psil-j721s2.c | ||
| k3-psil-j784s4.c | ||
| k3-psil-j7200.c | ||
| k3-psil-priv.h | ||
| k3-psil.c | ||
| k3-udma-glue.c | ||
| k3-udma-private.c | ||
| k3-udma.c | ||
| k3-udma.h | ||
| omap-dma.c | ||