]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
accel/ethosu: fix arithmetic issues in dma_length()
authorMuhammad Bilal <meatuni001@gmail.com>
Sun, 24 May 2026 10:37:10 +0000 (10:37 +0000)
committerRob Herring (Arm) <robh@kernel.org>
Thu, 4 Jun 2026 22:43:27 +0000 (17:43 -0500)
commitee6d9b6e51626f259c6f0e38d94f91be4fd14754
tree93e92e6c9bd7efd70b906ec5783d1a7b27fd2f95
parente703843f242b28e35ac79408de571ae110c740b5
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>
drivers/accel/ethosu/ethosu_gem.c