On Mon, Apr 29, 2013 at 01:57:18AM -0700, Michel Lespinasse wrote: > On Mon, Apr 15, 2013 at 6:27 PM, Hugh Dickins <hu...@google.com> wrote: > > On Mon, 15 Apr 2013, Michel Lespinasse wrote: > >> sys_brk() passes the length as the difference of two page aligned > >> addresses, so it's fine. But vm_brk() doesn't - it calls do_brk() which > >> page aligns the length, but then vm_brk passes the unaligned length to > >> mm_populate(). > >> > >> What do you think of the following ? len is already a PAGE_SIZE multiple > >> when called from sys_brk()... > > > > Yes, that's good. > >> > >> diff --git a/mm/mmap.c b/mm/mmap.c > >> index 0db0de1c2fbe..6af8b0d1c7db 100644 > >> --- a/mm/mmap.c > >> +++ b/mm/mmap.c > >> @@ -2557,10 +2557,6 @@ static unsigned long do_brk(unsigned long addr, > >> unsigned long len) > >> pgoff_t pgoff = addr >> PAGE_SHIFT; > >> int error; > >> > >> - len = PAGE_ALIGN(len); > >> - if (!len) > >> - return addr; > >> - > >> flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags; > >> > >> error = get_unmapped_area(NULL, addr, len, 0, MAP_FIXED); > >> @@ -2643,6 +2639,10 @@ unsigned long vm_brk(unsigned long addr, unsigned > >> long len) > >> unsigned long ret; > >> bool populate; > >> > >> + len = PAGE_ALIGN(len); > >> + if (!len) > >> + return addr; > >> + > >> down_write(&mm->mmap_sem); > >> ret = do_brk(addr, len); > >> populate = ((mm->def_flags & VM_LOCKED) != 0); > > Vivek - what should I do with this change ? Do you want to take it as > part of your series, or should I push to Linus/Andrew ? > > All vm_brk calls are in elf and aout loaders, so I don' t think we can > hit the issue without your changes. Still, it may be good to make > vm_brk robust anyway.
Hi Michel, Thanks for the fix. Sorry, could not respond earlier as I was away from work. This patch did fix the issue for me. I think it is a good idea to push this fix to Andrew irrespective of my changes. My series is in RFC phase and there are no guarantees whether patches will be accespected or not. So please go ahead and send this fix to andrew for inclusion. Thanks Vivek -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/