Messages in this thread | | | Date | Mon, 16 Feb 2015 12:45:24 +0100 | Subject | Re: [Regression]: mm: nommu: Memory leak introduced with commit "mm/nommu: use alloc_pages_exact() rather than its own implementation" | From | Maxime Coquelin <> |
| |
Hello Joonsoo,
2015-02-16 5:43 GMT+01:00 Joonsoo Kim <js1304@gmail.com>: > > 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 <mcoquelin.stm32@gmail.com>
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;
| |