Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp827830yba; Wed, 15 May 2019 10:36:06 -0700 (PDT) X-Google-Smtp-Source: APXvYqyHVfNO6z8CRUYDSuberUm1sIzc9jI3V1kIlD+JUhJjmmCl3zMEQq392EQFikB1NFC9YJ63 X-Received: by 2002:a17:902:4827:: with SMTP id s36mr22108369pld.197.1557941766485; Wed, 15 May 2019 10:36:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1557941766; cv=none; d=google.com; s=arc-20160816; b=tynR6njXWDmDWnez01Qfu3SSFeLWLuqhvMlwpldtg9hmChAOIzlOVlCJwpumIwZI1d kcNp4ZBpBc0gxkhNe+jHH9WS0eXX5F1ipzAMkehPBjyohc10PGql3qBtsb7cTf/smcri gdxidZx7y1xjbVdWZKn3uIGE7L8BlNk8ua8Vec/h/yzmqvS3ZR2R23oOEi7ovhSrLjs6 hdKYwE5/6i6cZ9ErqL5rFxVv2noRxc/ahPA3au8HxHUYuJMcIKc4/SCIwb3i4hFC1onR 6HKJF0MbhWN/rBq9tSj2gjJtBx1dWtp85Cu7pIvuRbGsRPtk+Ell0TgIUxhkkzSSZI5S XUQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=YWa2PD6tH6ZQWGjQMACiEGWV6SmTrTUziLaTxaR+k4Q=; b=015Z/Z8OcdEki6MMDxVbClWG4G4pYUxsbhU4vUkVZ82xOPhHUO3XAjVB5GbNZRzPhJ e5pZ4qbPHNNnlnBf+4KyVKkMCPqXPsEmQM0AiKe0Jrby1eMdnPWfiH1EXYUMBq8sdP2I iYDH9WpuQjbe6BBq0WLS1QfTIeKIgcwBUWWAFBmNjuToOHut2sIUpIwjha57AttDUhNs QJZA3uNUMPiJqkop8TxWLIjtgqoDaRkVL5VptbQzg5PLnrABvNVy3zMhAbRtmTSmqqPY uJ6Pm3KKWWAmWhjt98sV3JuVVFpG/dlyT9G/oNM73tvcUyJZ3W5vK3EZKXA0r9HiFCKX 9ILg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t11si2352518pgj.284.2019.05.15.10.35.50; Wed, 15 May 2019 10:36:06 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726865AbfEOReo (ORCPT + 99 others); Wed, 15 May 2019 13:34:44 -0400 Received: from mga09.intel.com ([134.134.136.24]:43061 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725974AbfEOReo (ORCPT ); Wed, 15 May 2019 13:34:44 -0400 X-Amp-Result: UNSCANNABLE X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 May 2019 10:34:43 -0700 X-ExtLoop1: 1 Received: from iweiny-desk2.sc.intel.com ([10.3.52.157]) by fmsmga001.fm.intel.com with ESMTP; 15 May 2019 10:34:43 -0700 Date: Wed, 15 May 2019 10:35:26 -0700 From: Ira Weiny To: Roman Gushchin Cc: Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-team@fb.com, Johannes Weiner , Matthew Wilcox , Vlastimil Babka Subject: Re: [PATCH] mm: refactor __vunmap() to avoid duplicated call to find_vm_area() Message-ID: <20190515173525.GB1888@iweiny-DESK2.sc.intel.com> References: <20190514235111.2817276-1-guro@fb.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190514235111.2817276-1-guro@fb.com> User-Agent: Mutt/1.11.1 (2018-12-01) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > > -/* Handle removing and resetting vm mappings related to the vm_struct. */ > -static void vm_remove_mappings(struct vm_struct *area, int deallocate_pages) > +/* Handle removing and resetting vm mappings related to the va->vm vm_struct. */ > +static void vm_remove_mappings(struct vmap_area *va, int deallocate_pages) Does this apply to 5.1? I'm confused because I can't find vm_remove_mappings() in 5.1. Ira > { > + struct vm_struct *area = va->vm; > unsigned long addr = (unsigned long)area->addr; > unsigned long start = ULONG_MAX, end = 0; > int flush_reset = area->flags & VM_FLUSH_RESET_PERMS; > @@ -2138,7 +2143,7 @@ static void vm_remove_mappings(struct vm_struct *area, int deallocate_pages) > set_memory_rw(addr, area->nr_pages); > } > > - remove_vm_area(area->addr); > + __remove_vm_area(va); > > /* If this is not VM_FLUSH_RESET_PERMS memory, no need for the below. */ > if (!flush_reset) > @@ -2178,6 +2183,7 @@ static void vm_remove_mappings(struct vm_struct *area, int deallocate_pages) > static void __vunmap(const void *addr, int deallocate_pages) > { > struct vm_struct *area; > + struct vmap_area *va; > > if (!addr) > return; > @@ -2186,17 +2192,18 @@ static void __vunmap(const void *addr, int deallocate_pages) > addr)) > return; > > - area = find_vm_area(addr); > - if (unlikely(!area)) { > + va = find_vmap_area((unsigned long)addr); > + if (unlikely(!va || !(va->flags & VM_VM_AREA))) { > WARN(1, KERN_ERR "Trying to vfree() nonexistent vm area (%p)\n", > addr); > return; > } > > + area = va->vm; > debug_check_no_locks_freed(area->addr, get_vm_area_size(area)); > debug_check_no_obj_freed(area->addr, get_vm_area_size(area)); > > - vm_remove_mappings(area, deallocate_pages); > + vm_remove_mappings(va, deallocate_pages); > > if (deallocate_pages) { > int i; > @@ -2212,7 +2219,6 @@ static void __vunmap(const void *addr, int deallocate_pages) > } > > kfree(area); > - return; > } > > static inline void __vfree_deferred(const void *addr) > -- > 2.20.1 >