From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751158AbcHHE3X (ORCPT ); Mon, 8 Aug 2016 00:29:23 -0400 Received: from mail-pf0-f195.google.com ([209.85.192.195]:35471 "EHLO mail-pf0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750795AbcHHE3V (ORCPT ); Mon, 8 Aug 2016 00:29:21 -0400 Date: Mon, 8 Aug 2016 12:29:08 +0800 From: Peng Fan To: gregkh@linuxfoundation.org Cc: linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: Re: [PATCH] drivers: base: dma-mapping: page align the size when unmap_kernel_range Message-ID: <20160808042906.GA1902@linux-7smt.suse> References: <1469088261-5093-1-git-send-email-van.freenix@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1469088261-5093-1-git-send-email-van.freenix@gmail.com> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, Kindly ping.. since more than two weeks from patch sent out. Thanks, Peng. On Thu, Jul 21, 2016 at 04:04:21PM +0800, Peng Fan wrote: >When dma_common_free_remap, the input parameter 'size' may not >be page aligned. And, met kernel warning when doing iommu dma >for usb on i.MX8 platform: >" >WARNING: CPU: 0 PID: 869 at mm/vmalloc.c:70 vunmap_page_range+0x1cc/0x1d0() >Modules linked in: >CPU: 0 PID: 869 Comm: kworker/u8:2 Not tainted 4.1.12-00444-gc5f9d1d-dirty #147 >Hardware name: Freescale i.MX8DV Sabreauto (DT) >Workqueue: ci_otg ci_otg_work >Call trace: >[] dump_backtrace+0x0/0x124 >[] show_stack+0x10/0x1c >[] dump_stack+0x84/0xc8 >[] warn_slowpath_common+0x98/0xd0 >[] warn_slowpath_null+0x14/0x20 >[] vunmap_page_range+0x1c8/0x1d0 >[] unmap_kernel_range+0x20/0x88 >[] dma_common_free_remap+0x74/0x84 >[] __iommu_free_attrs+0x9c/0x178 >[] ehci_mem_cleanup+0x140/0x194 >[] ehci_stop+0x8c/0xdc >[] usb_remove_hcd+0xf0/0x1cc >[] host_stop+0x1c/0x58 >[] ci_otg_work+0xdc/0x120 >[] process_one_work+0x134/0x33c >[] worker_thread+0x13c/0x47c >[] kthread+0xd8/0xf0 >" > >For dma_common_pages_remap: >dma_common_pages_remap > |->get_vm_area_caller > |->__get_vm_area_node > |->size = PAGE_ALIGN(size); Round up to page aligned > >So, in dma_common_free_remap, we also need a page aligned size, >pass 'PAGE_ALIGN(size)' to unmap_kernel_range. > >Signed-off-by: Peng Fan >Cc: Greg Kroah-Hartman >Cc: >--- > drivers/base/dma-mapping.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > >diff --git a/drivers/base/dma-mapping.c b/drivers/base/dma-mapping.c >index d799662..261420d 100644 >--- a/drivers/base/dma-mapping.c >+++ b/drivers/base/dma-mapping.c >@@ -334,7 +334,7 @@ void dma_common_free_remap(void *cpu_addr, size_t size, unsigned long vm_flags) > return; > } > >- unmap_kernel_range((unsigned long)cpu_addr, size); >+ unmap_kernel_range((unsigned long)cpu_addr, PAGE_ALIGN(size)); > vunmap(cpu_addr); > } > #endif >-- >2.6.2 >