From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753185AbbHWRVy (ORCPT ); Sun, 23 Aug 2015 13:21:54 -0400 Received: from col004-omc1s13.hotmail.com ([65.55.34.23]:59101 "EHLO COL004-OMC1S13.hotmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752123AbbHWRVx convert rfc822-to-8bit (ORCPT ); Sun, 23 Aug 2015 13:21:53 -0400 X-TMN: [IYQ/6dGtzDWFUqBqH5NmKOp8WV7Mhbmo] X-Originating-Email: [xili_gchen_5257@hotmail.com] Message-ID: From: Chen Gang To: kernel mailing list , "linux-ia64@vger.kernel.org" Subject: [PATCH] mm: mmap: Check all failures before set values Date: Mon, 24 Aug 2015 01:21:52 +0800 Importance: Normal Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 X-OriginalArrivalTime: 23 Aug 2015 17:21:53.0284 (UTC) FILETIME=[34352440:01D0DDC8] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When failure occurs and return, vma->vm_pgoff is already set, which is not a good idea. Signed-off-by: Chen Gang ---  mm/mmap.c | 13 +++++++------  1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/mm/mmap.c b/mm/mmap.c index 8e0366e..b5a6f09 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -2878,6 +2878,13 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)   struct vm_area_struct *prev;   struct rb_node **rb_link, *rb_parent;   + if (find_vma_links(mm, vma->vm_start, vma->vm_end, +   &prev, &rb_link, &rb_parent)) + return -ENOMEM; + if ((vma->vm_flags & VM_ACCOUNT) && +     security_vm_enough_memory_mm(mm, vma_pages(vma))) + return -ENOMEM; +   /*   * The vm_pgoff of a purely anonymous vma should be irrelevant   * until its first write fault, when page's anon_vma and index @@ -2894,12 +2901,6 @@ int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)   BUG_ON(vma->anon_vma);   vma->vm_pgoff = vma->vm_start>> PAGE_SHIFT;   } - if (find_vma_links(mm, vma->vm_start, vma->vm_end, -   &prev, &rb_link, &rb_parent)) - return -ENOMEM; - if ((vma->vm_flags & VM_ACCOUNT) && -     security_vm_enough_memory_mm(mm, vma_pages(vma))) - return -ENOMEM;     vma_link(mm, vma, prev, rb_link, rb_parent);   return 0; --  1.9.3