Re: [PATCH] mlock: operate on any regions with protection != PROT_NONE

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



(forgot the signoff...)

On Mon, Jan 31, 2011 at 5:03 PM, Michel Lespinasse <walken@xxxxxxxxxx> wrote:
> As Tao Ma noticed, change 5ecfda0 breaks blktrace. This is because
> blktrace mmaps a file with PROT_WRITE permissions but without PROT_READ,
> so my attempt to not unnecessarity break COW during mlock ended up
> causing mlock to fail with a permission problem.
>
> I am proposing to let mlock ignore vma protection in all cases except
> PROT_NONE. In particular, mlock should not fail for PROT_WRITE regions
> (as in the blktrace case, which broke at 5ecfda0) or for PROT_EXEC
> regions (which seem to me like they were always broken).
>
> Please review. I am proposing this as a candidate for 2.6.38 inclusion,
> because of the behavior change with blktrace.

Signed-off-by: Michel Lespinasse <walken@xxxxxxxxxx>

> diff --git a/mm/mlock.c b/mm/mlock.c
> index 13e81ee..c3924c7f 100644
> --- a/mm/mlock.c
> +++ b/mm/mlock.c
> @@ -178,6 +178,13 @@ static long __mlock_vma_pages_range(struct vm_area_struct *vma,
>        if ((vma->vm_flags & (VM_WRITE | VM_SHARED)) == VM_WRITE)
>                gup_flags |= FOLL_WRITE;
>
> +       /*
> +        * We want mlock to succeed for regions that have any permissions
> +        * other than PROT_NONE.
> +        */
> +       if (vma->vm_flags & (VM_READ | VM_WRITE | VM_EXEC))
> +               gup_flags |= FOLL_FORCE;
> +
>        if (vma->vm_flags & VM_LOCKED)
>                gup_flags |= FOLL_MLOCK;

-- 
Michel "Walken" Lespinasse
A program is never fully debugged until the last user dies.

--
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 policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]