Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp272018ybp; Thu, 3 Oct 2019 13:21:30 -0700 (PDT) X-Google-Smtp-Source: APXvYqxN3HGtHODk7z5Ve2KlBJ011qscYqwYEj/Z18kS7rQlXt51VPfgxch8tB7no133zpMVxTK/ X-Received: by 2002:a50:c3c7:: with SMTP id i7mr11619044edf.138.1570134089990; Thu, 03 Oct 2019 13:21:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570134089; cv=none; d=google.com; s=arc-20160816; b=jxs5vS3mTOhGVGkoWOwiCQD+wuUB4gEiHFPXcGz2PgYOSev443XzzbJ355+SH5vys6 xetzFJ/Uo0AuJ1JuRuGNPbaQRA9fcsuh2cpM4sWWa0DXx15BLxYZGSGCk0JhQtFE7sbj O8cTZo1hCWEP0FdU95JmfpTqZQeI1I/nXE6mOXLdAm89rAlbB/AuP6AjnzGAJLtxTbS1 7sIKIpwhivkkx9aaaNXFNMF4fR27zeMoKBMypzd9MguDtDUcm1S9MLQjITuv/1fnmh7v /Me5MWHKlFQUqjyZdIDJan/Wsv2ztUi7rgRxBsu+EYYuQ8/9SQ+U+u1n7O0hkoDNYsgh GmxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=MHhLRu3+2XrVwwL0RwgBWJ4iUq/AK8qm2qR0+EyoWjk=; b=zOzYB+XhY4INJgovjuhH6ksfbIkTUPMtVfOf4UL/xX1nDgaFISFNE/UlApPgpG+wF3 uHsSRp9hSpARW/qrFZFueQSCNkMawriqgk/VBMO2wp00IawAnfBaki3Hkhu6PP4kmNjQ wZigslzAcDTJikvBey/6p2pDof4DmaWVFMbZLBRNF7+83+T2Y4sYhxGMtwBGJSf2PoBZ 57zlgzGDcR0ilkQaFRdHedYhvvoj3L6BX3x7TZY3MyKmT+keylK34nKMh+RsGMSccLUM Qdgkkd3aSf+yHIdxb1fSIOMXjdjhLMevBiSjtKiijgzbRPHL8DSrqvsqhFEjPf+fs+Ap SDgg== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i9si1855378ejy.106.2019.10.03.13.21.05; Thu, 03 Oct 2019 13:21:29 -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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389113AbfJCUUg (ORCPT + 99 others); Thu, 3 Oct 2019 16:20:36 -0400 Received: from mx2.suse.de ([195.135.220.15]:46740 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2388941AbfJCUUc (ORCPT ); Thu, 3 Oct 2019 16:20:32 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id EF8BDB06B; Thu, 3 Oct 2019 20:20:29 +0000 (UTC) From: Davidlohr Bueso To: akpm@linux-foundation.org Cc: walken@google.com, peterz@infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, dave@stgolabs.net, Davidlohr Bueso Subject: [PATCH 08/11] mm: convert vma_interval_tree to half closed intervals Date: Thu, 3 Oct 2019 13:18:55 -0700 Message-Id: <20191003201858.11666-9-dave@stgolabs.net> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20191003201858.11666-1-dave@stgolabs.net> References: <20191003201858.11666-1-dave@stgolabs.net> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The vma and anon vma interval tree really wants [a, b) intervals, not fully closed. As such convert it to use the new interval_tree_gen.h. Because of vma_last_pgoff(), the conversion is quite straightforward. Signed-off-by: Davidlohr Bueso --- include/linux/mm.h | 4 ++-- mm/interval_tree.c | 4 ++-- mm/memory.c | 2 +- mm/nommu.c | 2 +- mm/rmap.c | 6 +++--- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 53f9784d917d..3bc06e1de40c 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -2249,7 +2249,7 @@ struct vm_area_struct *vma_interval_tree_iter_next(struct vm_area_struct *node, vma; vma = vma_interval_tree_iter_next(vma, start, last)) #define vma_interval_tree_foreach_stab(vma, root, start) \ - vma_interval_tree_foreach(vma, root, start, start) + vma_interval_tree_foreach(vma, root, start, start + 1) void anon_vma_interval_tree_insert(struct anon_vma_chain *node, struct rb_root_cached *root); @@ -2269,7 +2269,7 @@ void anon_vma_interval_tree_verify(struct anon_vma_chain *node); avc; avc = anon_vma_interval_tree_iter_next(avc, start, last)) #define anon_vma_interval_tree_foreach_stab(vma, root, start) \ - anon_vma_interval_tree_foreach(vma, root, start, start) + anon_vma_interval_tree_foreach(vma, root, start, start + 1) /* mmap.c */ extern int __vm_enough_memory(struct mm_struct *mm, long pages, int cap_sys_admin); diff --git a/mm/interval_tree.c b/mm/interval_tree.c index 11c75fb07584..1f8a7c122dd7 100644 --- a/mm/interval_tree.c +++ b/mm/interval_tree.c @@ -8,7 +8,7 @@ #include #include #include -#include +#include static inline unsigned long vma_start_pgoff(struct vm_area_struct *v) { @@ -17,7 +17,7 @@ static inline unsigned long vma_start_pgoff(struct vm_area_struct *v) static inline unsigned long vma_last_pgoff(struct vm_area_struct *v) { - return v->vm_pgoff + vma_pages(v) - 1; + return v->vm_pgoff + vma_pages(v); } INTERVAL_TREE_DEFINE(struct vm_area_struct, shared.rb, diff --git a/mm/memory.c b/mm/memory.c index b1ca51a079f2..8f6978abf64a 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2679,7 +2679,7 @@ void unmap_mapping_pages(struct address_space *mapping, pgoff_t start, details.check_mapping = even_cows ? NULL : mapping; details.first_index = start; - details.last_index = start + nr - 1; + details.last_index = start + nr; if (details.last_index < details.first_index) details.last_index = ULONG_MAX; diff --git a/mm/nommu.c b/mm/nommu.c index 99b7ec318824..284c2a948d79 100644 --- a/mm/nommu.c +++ b/mm/nommu.c @@ -1793,7 +1793,7 @@ int nommu_shrink_inode_mappings(struct inode *inode, size_t size, size_t r_size, r_top; low = newsize >> PAGE_SHIFT; - high = (size + PAGE_SIZE - 1) >> PAGE_SHIFT; + high = (size + PAGE_SIZE) >> PAGE_SHIFT; down_write(&nommu_region_sem); i_mmap_lock_read(inode->i_mapping); diff --git a/mm/rmap.c b/mm/rmap.c index d9a23bb773bf..48ca7d1a06b5 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -1826,7 +1826,7 @@ static void rmap_walk_anon(struct page *page, struct rmap_walk_control *rwc, return; pgoff_start = page_to_pgoff(page); - pgoff_end = pgoff_start + hpage_nr_pages(page) - 1; + pgoff_end = pgoff_start + hpage_nr_pages(page); anon_vma_interval_tree_foreach(avc, &anon_vma->rb_root, pgoff_start, pgoff_end) { struct vm_area_struct *vma = avc->vma; @@ -1879,11 +1879,11 @@ static void rmap_walk_file(struct page *page, struct rmap_walk_control *rwc, return; pgoff_start = page_to_pgoff(page); - pgoff_end = pgoff_start + hpage_nr_pages(page) - 1; + pgoff_end = pgoff_start + hpage_nr_pages(page); if (!locked) i_mmap_lock_read(mapping); vma_interval_tree_foreach(vma, &mapping->i_mmap, - pgoff_start, pgoff_end) { + pgoff_start, pgoff_end) { unsigned long address = vma_address(page, vma); cond_resched(); -- 2.16.4