diff options
author | Per Åstrand <per.astrand@arm.com> | 2021-11-09 13:56:45 +0100 |
---|---|---|
committer | Kristofer Jonsson <kristofer.jonsson@arm.com> | 2021-11-15 14:35:24 +0000 |
commit | ed7d6c103c2688680d57509293a4e4401bd02d01 (patch) | |
tree | b9772d852debca4b259a2d0e6bdc080b85f70216 | |
parent | 2ba3c1d55f638d1a2ecc5abb37f45504489bc8f0 (diff) | |
download | ethos-u-linux-driver-stack-ed7d6c103c2688680d57509293a4e4401bd02d01.tar.gz |
Change-Id: I1ad92264eb5dae672faf3f5b08a6f987148f629e
-rw-r--r-- | kernel/ethosu_buffer.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/kernel/ethosu_buffer.c b/kernel/ethosu_buffer.c index bcc7242..43a4333 100644 --- a/kernel/ethosu_buffer.c +++ b/kernel/ethosu_buffer.c @@ -1,5 +1,5 @@ /* - * (C) COPYRIGHT 2020 ARM Limited. All rights reserved. + * (C) COPYRIGHT 2020-2021 Arm Limited. All rights reserved. * * This program is free software and is provided to you under the terms of the * GNU General Public License version 2 as published by the Free Software @@ -67,7 +67,8 @@ static const struct file_operations ethosu_buffer_fops = { * offset ourselves. */ static dma_addr_t ethosu_buffer_dma_ranges(struct device *dev, - dma_addr_t dma_addr) + dma_addr_t dma_addr, + size_t dma_buf_size) { struct device_node *node = dev->of_node; const __be32 *ranges; @@ -107,7 +108,8 @@ static dma_addr_t ethosu_buffer_dma_ranges(struct device *dev, dev_dbg(dev, "daddr=0x%llx, paddr=0x%llx, size=0x%llx\n", daddr, paddr, size); - if (dma_addr >= paddr && dma_addr < (paddr + size)) + if (dma_addr >= paddr && + (dma_addr + dma_buf_size) < (paddr + size)) return dma_addr + daddr - paddr; } @@ -236,7 +238,8 @@ int ethosu_buffer_create(struct ethosu_device *edev, goto free_buf; buf->dma_addr = ethosu_buffer_dma_ranges(buf->edev->dev, - buf->dma_addr_orig); + buf->dma_addr_orig, + buf->capacity); ret = anon_inode_getfd("ethosu-buffer", ðosu_buffer_fops, buf, O_RDWR | O_CLOEXEC); |