lkml.org 
[lkml]   [2011]   [Mar]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 resend 06/12] mm: use mm_struct to resolve gate vma's in __get_user_pages
    Date
    We now check if a requested user page overlaps a gate vma using the supplied mm
    instead of the supplied task. The given task is now used solely for accounting
    purposes and may be NULL.

    Signed-off-by: Stephen Wilson <wilsons@start.ca>
    ---
    mm/memory.c | 18 +++++++++++-------
    1 files changed, 11 insertions(+), 7 deletions(-)

    diff --git a/mm/memory.c b/mm/memory.c
    index 3863e86..36445e3 100644
    --- a/mm/memory.c
    +++ b/mm/memory.c
    @@ -1437,9 +1437,9 @@ int __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
    struct vm_area_struct *vma;

    vma = find_extend_vma(mm, start);
    - if (!vma && in_gate_area(tsk->mm, start)) {
    + if (!vma && in_gate_area(mm, start)) {
    unsigned long pg = start & PAGE_MASK;
    - struct vm_area_struct *gate_vma = get_gate_vma(tsk->mm);
    + struct vm_area_struct *gate_vma = get_gate_vma(mm);
    pgd_t *pgd;
    pud_t *pud;
    pmd_t *pmd;
    @@ -1533,10 +1533,13 @@ int __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
    return i ? i : -EFAULT;
    BUG();
    }
    - if (ret & VM_FAULT_MAJOR)
    - tsk->maj_flt++;
    - else
    - tsk->min_flt++;
    +
    + if (tsk) {
    + if (ret & VM_FAULT_MAJOR)
    + tsk->maj_flt++;
    + else
    + tsk->min_flt++;
    + }

    if (ret & VM_FAULT_RETRY) {
    *nonblocking = 0;
    @@ -1581,7 +1584,8 @@ int __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,

    /**
    * get_user_pages() - pin user pages in memory
    - * @tsk: task_struct of target task
    + * @tsk: the task_struct to use for page fault accounting, or
    + * NULL if faults are not to be recorded.
    * @mm: mm_struct of target mm
    * @start: starting user address
    * @nr_pages: number of pages from start to pin
    --
    1.7.3.5


    \
     
     \ /
      Last update: 2011-03-23 15:49    [W:0.022 / U:1.780 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site