Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754450Ab1C1N5K (ORCPT ); Mon, 28 Mar 2011 09:57:10 -0400 Received: from mail-pz0-f46.google.com ([209.85.210.46]:46640 "EHLO mail-pz0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754427Ab1C1N5G (ORCPT ); Mon, 28 Mar 2011 09:57:06 -0400 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; b=Nj/mls+x4DJvfDaDXJQ1WKnHLAlc3vaFK2nxURy7L/+soLZwRkZDuoYAe8YKPC9C7n psgjvRemOC1yZKp3veN9977iAo9+8ZT5Jnt864rNbpO1un+Wl6jBkOwM2hLbD/0CyVIk HMRkBwOL7BmEdOsVXOqPDYztpt2zbMi7L878A= From: Namhyung Kim To: Andrew Morton Cc: Paul Mundt , David Howells , Greg Ungerer , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/6] nommu: don't scan the vma list when deleting Date: Mon, 28 Mar 2011 22:56:43 +0900 Message-Id: <1301320607-7259-3-git-send-email-namhyung@gmail.com> X-Mailer: git-send-email 1.7.4 In-Reply-To: <1301320607-7259-1-git-send-email-namhyung@gmail.com> References: <1301320607-7259-1-git-send-email-namhyung@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1461 Lines: 52 Since the commit 297c5eee3724 ("mm: make the vma list be doubly linked") made it a doubly linked list, we don't need to scan the list when deleting @vma. And the original code didn't update the prev pointer. Fix it too. Signed-off-by: Namhyung Kim --- mm/nommu.c | 15 ++++++++------- 1 files changed, 8 insertions(+), 7 deletions(-) diff --git a/mm/nommu.c b/mm/nommu.c index 20d9c330eb0e..a6a073f0745a 100644 --- a/mm/nommu.c +++ b/mm/nommu.c @@ -770,7 +770,6 @@ static void add_vma_to_mm(struct mm_struct *mm, struct vm_area_struct *vma) */ static void delete_vma_from_mm(struct vm_area_struct *vma) { - struct vm_area_struct **pp; struct address_space *mapping; struct mm_struct *mm = vma->vm_mm; @@ -793,12 +792,14 @@ static void delete_vma_from_mm(struct vm_area_struct *vma) /* remove from the MM's tree and list */ rb_erase(&vma->vm_rb, &mm->mm_rb); - for (pp = &mm->mmap; *pp; pp = &(*pp)->vm_next) { - if (*pp == vma) { - *pp = vma->vm_next; - break; - } - } + + if (vma->vm_prev) + vma->vm_prev->vm_next = vma->vm_next; + else + mm->mmap = vma->vm_next; + + if (vma->vm_next) + vma->vm_next->vm_prev = vma->vm_prev; vma->vm_mm = NULL; } -- 1.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/