Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753566AbeABBkh (ORCPT + 1 other); Mon, 1 Jan 2018 20:40:37 -0500 Received: from szxga04-in.huawei.com ([45.249.212.190]:3211 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753546AbeABBke (ORCPT ); Mon, 1 Jan 2018 20:40:34 -0500 Subject: Re: [RFC] does ioremap() cause memory leak? To: Xishi Qiu CC: Toshi Kani , "H. Peter Anvin" , "Thomas Gleixner" , Ingo Molnar , LKML , Linux MM , , "linux-arm-kernel@lists.infradead.org" , LinuxArm References: <5A3B76EE.8020001@huawei.com> <5A3DEA6A.9080709@huawei.com> From: Hanjun Guo Message-ID: Date: Tue, 2 Jan 2018 09:39:47 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: <5A3DEA6A.9080709@huawei.com> Content-Type: text/plain; charset="windows-1252" Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [10.177.223.23] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: On 2017/12/23 13:32, Xishi Qiu wrote: > On 2017/12/21 16:55, Xishi Qiu wrote: > >> When we use iounmap() to free the mapping, it calls unmap_vmap_area() to clear page table, >> but do not free the memory of page table, right? >> >> So when use ioremap() to mapping another area(incluce the area before), it may use >> large mapping(e.g. ioremap_pmd_enabled()), so the original page table memory(e.g. pte memory) >> will be lost, it cause memory leak, right? > > > > So I have two questions for this scene. > > 1. When the same virtual address allocated from ioremap, first is 4K size, second is 2M size, if Kernel would leak memory. > > 2. Kernel modifies the old invalid 4K pagetable to 2M, but doesn`t follow the ARM break-before-make flow, CPU maybe get the old invalid 4K pagetable information, then Kernel would panic. I sent a RFC patch for this one [1]. [1]: https://patchwork.kernel.org/patch/10134581/ Thanks Hanjun