···2828#include <linux/ipc.h>2929#include <linux/uaccess.h>30303131-extern unsigned long do_mremap(unsigned long addr, unsigned long old_len,3232- unsigned long new_len, unsigned long flags,3333- unsigned long new_addr);3434-3531/* common code for old and new mmaps */3632inline long do_mmap2(3733 unsigned long addr, unsigned long len,···3842 struct file * file = NULL;39434044 flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);4141-4242- if (flags & MAP_FIXED && addr < FIRST_USER_ADDRESS)4343- goto out;44454546 error = -EBADF;4647 if (!(flags & MAP_ANONYMOUS)) {···8087 error = do_mmap2(a.addr, a.len, a.prot, a.flags, a.fd, a.offset >> PAGE_SHIFT);8188out:8289 return error;8383-}8484-8585-asmlinkage unsigned long8686-sys_arm_mremap(unsigned long addr, unsigned long old_len,8787- unsigned long new_len, unsigned long flags,8888- unsigned long new_addr)8989-{9090- unsigned long ret = -EINVAL;9191-9292- if (flags & MREMAP_FIXED && new_addr < FIRST_USER_ADDRESS)9393- goto out;9494-9595- down_write(¤t->mm->mmap_sem);9696- ret = do_mremap(addr, old_len, new_len, flags, new_addr);9797- up_write(¤t->mm->mmap_sem);9898-9999-out:100100- return ret;10190}1029110392/*