diff options
| author | Muhammad Bilal <meatuni001@gmail.com> | 2026-05-24 10:37:10 +0000 |
|---|---|---|
| committer | Rob Herring (Arm) <robh@kernel.org> | 2026-06-04 17:43:27 -0500 |
| commit | ee6d9b6e51626f259c6f0e38d94f91be4fd14754 (patch) | |
| tree | 93e92e6c9bd7efd70b906ec5783d1a7b27fd2f95 /include/uapi/linux/netdev.h | |
| parent | e703843f242b28e35ac79408de571ae110c740b5 (diff) | |
| download | lwn-ee6d9b6e51626f259c6f0e38d94f91be4fd14754.tar.gz lwn-ee6d9b6e51626f259c6f0e38d94f91be4fd14754.zip | |
accel/ethosu: fix arithmetic issues in dma_length()
dma_length() derives DMA region usage from command stream values and
updates region_size[]:
len = ((len + stride[0]) * size0 + stride[1]) * size1
region_size[region] = max(..., len + dma->offset)
Several arithmetic issues can corrupt the derived region size:
- signed stride values may underflow when added to len
- intermediate multiplications may overflow
- len + dma->offset may overflow during region_size updates
- dma_length() error returns were not validated by the caller
region_size[] is later used by ethosu_job.c to validate command stream
accesses against GEM buffer sizes. Arithmetic wraparound can therefore
under-report region usage and bypass the bounds validation.
Fix by validating signed additions, using overflow helpers for
multiplications and offset updates, and propagating dma_length()
failures to the caller.
Fixes: 5a5e9c0228e6 ("accel: Add Arm Ethos-U NPU driver")
Cc: stable@vger.kernel.org
Signed-off-by: Muhammad Bilal <meatuni001@gmail.com>
Link: https://patch.msgid.link/20260524103710.47397-1-meatuni001@gmail.com
Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Diffstat (limited to 'include/uapi/linux/netdev.h')
0 files changed, 0 insertions, 0 deletions
