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 08/12] mm: implement access_remote_vm
    Date
    Provide an alternative to access_process_vm that allows the caller to obtain a
    reference to the supplied mm_struct.

    Signed-off-by: Stephen Wilson <wilsons@start.ca>
    ---
    include/linux/mm.h | 2 ++
    mm/memory.c | 16 ++++++++++++++++
    2 files changed, 18 insertions(+), 0 deletions(-)

    diff --git a/include/linux/mm.h b/include/linux/mm.h
    index 694512d..e5fde8a 100644
    --- a/include/linux/mm.h
    +++ b/include/linux/mm.h
    @@ -964,6 +964,8 @@ static inline int handle_mm_fault(struct mm_struct *mm,

    extern int make_pages_present(unsigned long addr, unsigned long end);
    extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, int write);
    +extern int access_remote_vm(struct mm_struct *mm, unsigned long addr,
    + void *buf, int len, int write);

    int get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
    unsigned long start, int nr_pages, int write, int force,
    diff --git a/mm/memory.c b/mm/memory.c
    index 68eec4f..c26e4f9 100644
    --- a/mm/memory.c
    +++ b/mm/memory.c
    @@ -3654,6 +3654,22 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
    return buf - old_buf;
    }

    +/**
    + * @access_remote_vm - access another process' address space
    + * @mm: the mm_struct of the target address space
    + * @addr: start address to access
    + * @buf: source or destination buffer
    + * @len: number of bytes to transfer
    + * @write: whether the access is a write
    + *
    + * The caller must hold a reference on @mm.
    + */
    +int access_remote_vm(struct mm_struct *mm, unsigned long addr,
    + void *buf, int len, int write)
    +{
    + return __access_remote_vm(NULL, mm, addr, buf, len, write);
    +}
    +
    /*
    * Access another process' address space.
    * Source/target buffer must be kernel space,
    --
    1.7.3.5


    \
     
     \ /
      Last update: 2011-03-23 16:23    [W:0.038 / U:32.052 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site