lkml.org 
[lkml]   [2015]   [Mar]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 1/2] mm: Introducing arch_remap hook
    Date
    Some architecture would like to be triggered when a memory area is moved
    through the mremap system call.

    This patch is introducing a new arch_remap mm hook which is placed in the
    path of mremap, and is called before the old area is unmapped (and the
    arch_unmap hook is called).

    The architectures which need to call this hook should define
    __HAVE_ARCH_REMAP in their asm/mmu_context.h and provide the arch_remap
    service with the following prototype:
    void arch_remap(struct mm_struct *mm,
    unsigned long old_start, unsigned long old_end,
    unsigned long new_start, unsigned long new_end);

    Signed-off-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
    ---
    mm/mremap.c | 11 +++++++++--
    1 file changed, 9 insertions(+), 2 deletions(-)

    diff --git a/mm/mremap.c b/mm/mremap.c
    index 57dadc025c64..bafc234db45c 100644
    --- a/mm/mremap.c
    +++ b/mm/mremap.c
    @@ -25,6 +25,7 @@

    #include <asm/cacheflush.h>
    #include <asm/tlbflush.h>
    +#include <asm/mmu_context.h>

    #include "internal.h"

    @@ -286,8 +287,14 @@ static unsigned long move_vma(struct vm_area_struct *vma,
    old_len = new_len;
    old_addr = new_addr;
    new_addr = -ENOMEM;
    - } else if (vma->vm_file && vma->vm_file->f_op->mremap)
    - vma->vm_file->f_op->mremap(vma->vm_file, new_vma);
    + } else {
    + if (vma->vm_file && vma->vm_file->f_op->mremap)
    + vma->vm_file->f_op->mremap(vma->vm_file, new_vma);
    +#ifdef __HAVE_ARCH_REMAP
    + arch_remap(mm, old_addr, old_addr+old_len,
    + new_addr, new_addr+new_len);
    +#endif
    + }

    /* Conceal VM_ACCOUNT so old reservation is not undone */
    if (vm_flags & VM_ACCOUNT) {
    --
    1.9.1


    \
     
     \ /
      Last update: 2015-03-25 15:01    [W:3.104 / U:0.148 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site