On Thu, May 5, 2011 at 9:38 AM, Greg Ungerer <gerg@xxxxxxxxxxxx> wrote: > On 05/05/11 07:13, Andrew Morton wrote: >> >> On Wed, 27 Apr 2011 15:12:14 +0800 >> Bob Liu<lliubbo@xxxxxxxxx> Âwrote: >> >>> Currently on nommu arch mmap(),mremap() and munmap() doesn't do >>> page_align() >>> which is incorrect and not consist with mmu arch. >>> This patch fix it. >>> >> >> Can you explain this fully please? ÂWhat was the user-observeable >> behaviour before the patch, and after? >> >> And some input from nommu maintainers would be nice. > > Its not obvious to me that there is a problem here. Are there > any issues caused by the current behavior that this fixes? > Yes, there is a issue. Some drivers' mmap() function depend on (vma->vm_end - vma->start) is page aligned which is true on mmu arch but not on nommu. eg: uvc camera driver. What's more, sometimes I got munmap() error. The reason is split file: mm/nommu.c do { 1614 if (start > vma->vm_start) { 1615 kleave(" = -EINVAL [miss]"); 1616 return -EINVAL; 1617 } 1618 if (end == vma->vm_end) 1619 goto erase_whole_vma; <<=====================here 1620 rb = rb_next(&vma->vm_rb); 1621 vma = rb_entry(rb, struct vm_area_struct, vm_rb); 1622 } while (rb); 1623 kleave(" = -EINVAL [split file]"); Because end is not page aligned (passed into from userspace) while some unknown reason vma->vm_end is aligned, this loop will fail and -EINVAL[split file] error returned. But it's hard to reproduce. And in my opinion consist with mmu alway a better choice. Thanks for your review. -- Regards, --Bob -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href