• Hugh Dickins's avatar
    [PATCH] mm: fix madvise vma merging · 836d5ffd
    Hugh Dickins authored
    Better late than never, I've at last reviewed the madvise vma merging
    going into 2.6.13.  Remove a pointless check and fix two little bugs -
    a simple test (with /proc/<pid>/maps hacked to show ReadHints) showed
    both mismerges in practice: though being madvise, neither was disastrous.
    
    1. Correct placement of the success label in madvise_behavior: as in
       mprotect_fixup and mlock_fixup, it is necessary to update vm_flags
       when vma_merge succeeds (to handle the exceptional Case 8 noted in
       the comments above vma_merge itself).
    
    2. Correct initial value of prev when starting part way into a vma: as
       in sys_mprotect and do_mlock, it needs to be set to vma in this case
       (vma_merge handles only that minimum of cases shown in its comments).
    
    3. If find_vma_prev sets prev, then the vma it returns is prev->vm_next,
       so it's pointless to make that same assignment again in sys_madvise.
    Signed-off-by: default avatarHugh Dickins <hugh@veritas.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    836d5ffd
madvise.c 7.22 KB