msm: ADSPRPC: Size check before allocating memory from DMA
For allocating memory from DMA we need to do a size check.
This validation is required to avoid any improper paging
request. We already have the range in which the size is
expected to be.
Change-Id: I9328c77704b712b0238815f8b410bd5b37036dcf
Acked-by: Ekansh Gupta <ekangupt@qti.qualcomm.com>
Signed-off-by: Jeya R <jeyr@codeaurora.org>
diff --git a/drivers/char/adsprpc.c b/drivers/char/adsprpc.c
index 798302a..c4e1b68 100644
--- a/drivers/char/adsprpc.c
+++ b/drivers/char/adsprpc.c
@@ -663,12 +663,20 @@
static int dma_alloc_memory(dma_addr_t *region_phys, void **vaddr, size_t size,
unsigned long dma_attrs)
{
+ int err = 0;
struct fastrpc_apps *me = &gfa;
if (me->dev == NULL) {
pr_err("device adsprpc-mem is not initialized\n");
return -ENODEV;
}
+ VERIFY(err, size > 0 && size < MAX_SIZE_LIMIT);
+ if (err) {
+ err = -EFAULT;
+ pr_err("adsprpc: %s: invalid allocation size 0x%zx\n",
+ __func__, size);
+ return err;
+ }
*vaddr = dma_alloc_attrs(me->dev, size, region_phys, GFP_KERNEL,
dma_attrs);
if (IS_ERR_OR_NULL(*vaddr)) {