Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932497AbbBPLp1 (ORCPT ); Mon, 16 Feb 2015 06:45:27 -0500 Received: from mail-wi0-f195.google.com ([209.85.212.195]:36640 "EHLO mail-wi0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932145AbbBPLp0 (ORCPT ); Mon, 16 Feb 2015 06:45:26 -0500 MIME-Version: 1.0 In-Reply-To: References: Date: Mon, 16 Feb 2015 12:45:24 +0100 Message-ID: Subject: Re: [Regression]: mm: nommu: Memory leak introduced with commit "mm/nommu: use alloc_pages_exact() rather than its own implementation" From: Maxime Coquelin To: Joonsoo Kim Cc: Joonsoo Kim , Linux Memory Management List , "linux-kernel@vger.kernel.org" Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1417 Lines: 45 Hello Joonsoo, 2015-02-16 5:43 GMT+01:00 Joonsoo Kim : > > Hello, > > Sorry for my mistake. > Problem happens because when we allocate memory through > __get_free_pages(), refcount of each pages is not 1 except > head page. Below modification will fix your problem. Could you > test it, please? I just tested it, and confirm it fixes the regression. You can add my: Tested-by: Maxime Coquelin Thanks for the quick fix! Maxime > > Thanks. > > ------------>8------------- > diff --git a/mm/nommu.c b/mm/nommu.c > index 28bd8c4..ff6c1e2 100644 > --- a/mm/nommu.c > +++ b/mm/nommu.c > @@ -1189,11 +1189,9 @@ static int do_mmap_private(struct vm_area_struct *vma, > if (sysctl_nr_trim_pages && total - point >= sysctl_nr_trim_pages) { > total = point; > kdebug("try to alloc exact %lu pages", total); > - base = alloc_pages_exact(len, GFP_KERNEL); > - } else { > - base = (void *)__get_free_pages(GFP_KERNEL, order); > } > > + base = alloc_pages_exact(total << PAGE_SHIFT, GFP_KERNEL); > if (!base) > goto enomem; -- 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/