From adcf23cfd50ad6fe1df98646302706ae03ec4f1b Mon Sep 17 00:00:00 2001 From: Shiraz Hashim Date: Thu, 3 Nov 2016 20:44:14 +0530 Subject: [PATCH] arm: dma-mapping: page align size before flush tlb start and end must be page aligned while calling flush_tlb_kernel_range else the last page may get missed while invalidation. Change-Id: Ibaab202c47a475623e197a13191b2fed638ce20b Signed-off-by: Shiraz Hashim --- arch/arm/mm/dma-mapping.c | 1 + arch/arm64/mm/dma-mapping.c | 1 + 2 files changed, 2 insertions(+) diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c index 369fca73a9ab..80c4c50814d8 100644 --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c @@ -807,6 +807,7 @@ static void arm_dma_unremap(struct device *dev, void *remapped_addr, unsigned int flags = VM_ARM_DMA_CONSISTENT | VM_USERMAP; struct vm_struct *area; + size = PAGE_ALIGN(size); remapped_addr = (void *)((unsigned long)remapped_addr & PAGE_MASK); area = find_vm_area(remapped_addr); diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c index 07c67348b815..df083e9350c4 100644 --- a/arch/arm64/mm/dma-mapping.c +++ b/arch/arm64/mm/dma-mapping.c @@ -455,6 +455,7 @@ static void arm64_dma_unremap(struct device *dev, void *remapped_addr, { struct vm_struct *area; + size = PAGE_ALIGN(size); remapped_addr = (void *)((unsigned long)remapped_addr & PAGE_MASK); area = find_vm_area(remapped_addr);