Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp2705477ybp; Sat, 5 Oct 2019 18:33:25 -0700 (PDT) X-Google-Smtp-Source: APXvYqxAmYa12gK0MkROir8GP+RqLDJg6NSfW5BnBRjuo7xSUxSRAjTufYYACkQk5rGcVeaeIHy5 X-Received: by 2002:a50:acc1:: with SMTP id x59mr22869997edc.278.1570325605417; Sat, 05 Oct 2019 18:33:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570325605; cv=none; d=google.com; s=arc-20160816; b=VNKMtc1BvgbDLbmDQUVhrNal4aCCTNpx2KSMD1rvphLKaAfpv74SFoGasWhwmpdpdv OEGF9nntTxab4sbQMWJBeMlVxni+v3Ziqlovqfhcs/HnpvCxBwRAxSjakSYElIgq9dAm 3ZwMRyCsWwePyBF2X4whtOvPKKUhen/2WnAgY+LX7WrQ9WMBnniicWzFHjx5oFwTh6mR dMwZeH4+0zWWDhJMPERSL+IJ9biZZB1MFMSZnYkL6isLLjNA9u9thqBrbwJl4uOWamD4 9+HOe2AEl07VNbyWxnzsglcDb22CT1gLmwJzPq3GYJAUzNb157WptjS24gq2N9vyn86t Pchw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=J5dtmE15lq39+hKR9bqaa1C9U7/s2rIRz9lu8YykjXI=; b=TPeYWi4H3cUVtR7KkV9EjEbMzmBhbbmlAW1q9zYHf3YysYJerOD25DcGSGnWMFN2Hp r+Xz2vKNQXOaK5r4Og1dn1pKSChDb/2Yvfv1SHl/yW/Dddm9Q+ku57HBb8nkO6k1bx29 JUXDGaE8InkGkKnOlc43XJfzkIIFYBHM0TqvvNxV9UPkip+yhnvzEYgpPrdik81UXGEN 8mfrDRmUg9DCEyJAxJCsPRJpXozxp7u28AX7vzDrSQRw14m+D9CsES84I0MkOqrAgHF8 JXQ3Ame694mYFkuGq0xEmZ6flYcKn3rgL73ZtB970izXTWGN/YuWmb1zuqJupIAiUk5/ 4EmQ== 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 c21si5174388ejx.295.2019.10.05.18.33.01; Sat, 05 Oct 2019 18:33:25 -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 S1727106AbfJFBbw (ORCPT + 99 others); Sat, 5 Oct 2019 21:31:52 -0400 Received: from mga02.intel.com ([134.134.136.20]:47352 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726992AbfJFBbw (ORCPT ); Sat, 5 Oct 2019 21:31:52 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Oct 2019 18:31:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,261,1566889200"; d="scan'208";a="199200370" Received: from richard.sh.intel.com (HELO localhost) ([10.239.159.54]) by FMSMGA003.fm.intel.com with ESMTP; 05 Oct 2019 18:31:49 -0700 From: Wei Yang To: akpm@linux-foundation.org, mgorman@techsingularity.net, vbabka@suse.cz, osalvador@suse.de, hch@infradead.org, willy@infradead.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Wei Yang Subject: [Patch v2 1/3] mm/mmap.c: prev could be retrieved from vma->vm_prev Date: Sun, 6 Oct 2019 09:26:34 +0800 Message-Id: <20191006012636.31521-1-richardw.yang@linux.intel.com> X-Mailer: git-send-email 2.17.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently __vma_unlink_common handles two cases: * has_prev * or not When has_prev is false, it is obvious prev is calculated from vma->vm_prev in __vma_unlink_common. When has_prev is true, the prev is passed through from __vma_unlink_prev in __vma_adjust for non-case 8. And at the beginning next is calculated from vma->vm_next, which implies vma is next->vm_prev. The above statement sounds a little complicated, while to think in another point of view, no matter whether vma and next is swapped, the mmap link list still preserves its property. It is proper to access vma->vm_prev. Signed-off-by: Wei Yang --- v2: rebase on top of 5.4-rc1 --- mm/mmap.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/mm/mmap.c b/mm/mmap.c index 338213aed65a..c61403f25833 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -684,23 +684,17 @@ static void __insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma) static __always_inline void __vma_unlink_common(struct mm_struct *mm, struct vm_area_struct *vma, - struct vm_area_struct *prev, - bool has_prev, struct vm_area_struct *ignore) { - struct vm_area_struct *next; + struct vm_area_struct *prev, *next; vma_rb_erase_ignore(vma, &mm->mm_rb, ignore); next = vma->vm_next; - if (has_prev) + prev = vma->vm_prev; + if (prev) prev->vm_next = next; - else { - prev = vma->vm_prev; - if (prev) - prev->vm_next = next; - else - mm->mmap = next; - } + else + mm->mmap = next; if (next) next->vm_prev = prev; @@ -712,7 +706,7 @@ static inline void __vma_unlink_prev(struct mm_struct *mm, struct vm_area_struct *vma, struct vm_area_struct *prev) { - __vma_unlink_common(mm, vma, prev, true, vma); + __vma_unlink_common(mm, vma, vma); } /* @@ -900,7 +894,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start, * "next" (which is stored in post-swap() * "vma"). */ - __vma_unlink_common(mm, next, NULL, false, vma); + __vma_unlink_common(mm, next, vma); if (file) __remove_shared_vm_struct(next, file, mapping); } else if (insert) { -- 2.17.1