lkml.org 
[lkml]   [2010]   [Nov]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 13 of 66] export maybe_mkwrite
    Date
    From
    From: Andrea Arcangeli <aarcange@redhat.com>

    huge_memory.c needs it too when it fallbacks in copying hugepages into regular
    fragmented pages if hugepage allocation fails during COW.

    Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
    Acked-by: Rik van Riel <riel@redhat.com>
    Acked-by: Mel Gorman <mel@csn.ul.ie>
    ---

    diff --git a/include/linux/mm.h b/include/linux/mm.h
    --- a/include/linux/mm.h
    +++ b/include/linux/mm.h
    @@ -416,6 +416,19 @@ static inline void set_compound_order(st
    }

    /*
    + * Do pte_mkwrite, but only if the vma says VM_WRITE. We do this when
    + * servicing faults for write access. In the normal case, do always want
    + * pte_mkwrite. But get_user_pages can cause write faults for mappings
    + * that do not have writing enabled, when used by access_process_vm.
    + */
    +static inline pte_t maybe_mkwrite(pte_t pte, struct vm_area_struct *vma)
    +{
    + if (likely(vma->vm_flags & VM_WRITE))
    + pte = pte_mkwrite(pte);
    + return pte;
    +}
    +
    +/*
    * Multiple processes may "see" the same page. E.g. for untouched
    * mappings of /dev/null, all processes see the same page full of
    * zeroes, and text pages of executables and shared libraries have
    diff --git a/mm/memory.c b/mm/memory.c
    --- a/mm/memory.c
    +++ b/mm/memory.c
    @@ -2048,19 +2048,6 @@ static inline int pte_unmap_same(struct
    return same;
    }

    -/*
    - * Do pte_mkwrite, but only if the vma says VM_WRITE. We do this when
    - * servicing faults for write access. In the normal case, do always want
    - * pte_mkwrite. But get_user_pages can cause write faults for mappings
    - * that do not have writing enabled, when used by access_process_vm.
    - */
    -static inline pte_t maybe_mkwrite(pte_t pte, struct vm_area_struct *vma)
    -{
    - if (likely(vma->vm_flags & VM_WRITE))
    - pte = pte_mkwrite(pte);
    - return pte;
    -}
    -
    static inline void cow_user_page(struct page *dst, struct page *src, unsigned long va, struct vm_area_struct *vma)
    {
    /*

    \
     
     \ /
      Last update: 2010-11-03 16:41    [W:0.021 / U:59.068 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site