tag | line | file | source code |
vma | 86 | drivers/char/mem.c | static int mmap_mem(struct inode * inode, struct file * file, struct vm_area_struct * vma) |
vma | 88 | drivers/char/mem.c | if (vma->vm_offset & ~PAGE_MASK) |
vma | 90 | drivers/char/mem.c | if (x86 > 3 && vma->vm_offset >= high_memory) |
vma | 91 | drivers/char/mem.c | vma->vm_page_prot |= PAGE_PCD; |
vma | 92 | drivers/char/mem.c | if (remap_page_range(vma->vm_start, vma->vm_offset, vma->vm_end - vma->vm_start, vma->vm_page_prot)) |
vma | 94 | drivers/char/mem.c | vma->vm_inode = inode; |
vma | 162 | drivers/char/mem.c | static int mmap_zero(struct inode * inode, struct file * file, struct vm_area_struct * vma) |
vma | 164 | drivers/char/mem.c | if (vma->vm_page_prot & PAGE_RW) |
vma | 166 | drivers/char/mem.c | if (zeromap_page_range(vma->vm_start, vma->vm_end - vma->vm_start, vma->vm_page_prot)) |
vma | 84 | fs/msdos/mmap.c | int msdos_mmap(struct inode * inode, struct file * file, struct vm_area_struct * vma) |
vma | 86 | fs/msdos/mmap.c | if (vma->vm_page_prot & PAGE_RW) /* only PAGE_COW or read-only supported now */ |
vma | 88 | fs/msdos/mmap.c | if (vma->vm_offset & (inode->i_sb->s_blocksize - 1)) |
vma | 97 | fs/msdos/mmap.c | vma->vm_inode = inode; |
vma | 99 | fs/msdos/mmap.c | vma->vm_ops = &msdos_file_mmap; |
vma | 24 | fs/nfs/file.c | extern int nfs_mmap(struct inode * inode, struct file * file, struct vm_area_struct * vma); |
vma | 88 | fs/nfs/mmap.c | int nfs_mmap(struct inode * inode, struct file * file, struct vm_area_struct * vma) |
vma | 90 | fs/nfs/mmap.c | if (vma->vm_page_prot & PAGE_RW) /* only PAGE_COW or read-only supported now */ |
vma | 99 | fs/nfs/mmap.c | vma->vm_inode = inode; |
vma | 101 | fs/nfs/mmap.c | vma->vm_ops = &nfs_file_mmap; |
vma | 75 | fs/proc/link.c | struct vm_area_struct * vma = p->mm->mmap; |
vma | 76 | fs/proc/link.c | while (vma) { |
vma | 77 | fs/proc/link.c | if (vma->vm_flags & VM_DENYWRITE) { |
vma | 78 | fs/proc/link.c | inode = vma->vm_inode; |
vma | 81 | fs/proc/link.c | vma = vma->vm_next; |
vma | 516 | fs/super.c | struct vm_area_struct * vma; |
vma | 522 | fs/super.c | for (vma = current->mm->mmap ; ; ) { |
vma | 523 | fs/super.c | if (!vma || |
vma | 524 | fs/super.c | (unsigned long) data < vma->vm_start) { |
vma | 527 | fs/super.c | if ((unsigned long) data < vma->vm_end) |
vma | 529 | fs/super.c | vma = vma->vm_next; |
vma | 531 | fs/super.c | i = vma->vm_end - (unsigned long) data; |
vma | 68 | fs/sysv/mmap.c | int sysv_mmap(struct inode * inode, struct file * file, struct vm_area_struct * vma) |
vma | 70 | fs/sysv/mmap.c | if (vma->vm_page_prot & PAGE_RW) /* only PAGE_COW or read-only supported right now */ |
vma | 72 | fs/sysv/mmap.c | if (vma->vm_offset & (inode->i_sb->s_blocksize - 1)) |
vma | 81 | fs/sysv/mmap.c | vma->vm_inode = inode; |
vma | 83 | fs/sysv/mmap.c | vma->vm_ops = &sysv_file_mmap; |
vma | 166 | include/linux/mm.h | extern void do_wp_page(struct vm_area_struct * vma, unsigned long address, |
vma | 168 | include/linux/mm.h | extern void do_no_page(struct vm_area_struct * vma, unsigned long address, |
vma | 115 | include/linux/nfs_fs.h | extern int nfs_mmap(struct inode * inode, struct file * file, struct vm_area_struct * vma); |
vma | 398 | ipc/shm.c | struct vm_area_struct * vma; |
vma | 400 | ipc/shm.c | vma = (struct vm_area_struct * ) kmalloc(sizeof(struct vm_area_struct), GFP_KERNEL); |
vma | 401 | ipc/shm.c | if (!vma) |
vma | 404 | ipc/shm.c | vma->vm_task = current; |
vma | 405 | ipc/shm.c | vma->vm_start = addr; |
vma | 406 | ipc/shm.c | vma->vm_end = addr + len; |
vma | 407 | ipc/shm.c | vma->vm_flags = VM_SHM | VM_MAYREAD | VM_MAYEXEC | VM_READ | VM_EXEC; |
vma | 409 | ipc/shm.c | vma->vm_page_prot = PAGE_READONLY; |
vma | 411 | ipc/shm.c | vma->vm_flags |= VM_MAYWRITE | VM_WRITE; |
vma | 412 | ipc/shm.c | vma->vm_page_prot = PAGE_SHARED; |
vma | 414 | ipc/shm.c | vma->vm_share = NULL; |
vma | 415 | ipc/shm.c | vma->vm_inode = NULL; |
vma | 416 | ipc/shm.c | vma->vm_offset = 0; |
vma | 417 | ipc/shm.c | vma->vm_ops = &shm_vm_ops; |
vma | 418 | ipc/shm.c | insert_vm_struct(current, vma); |
vma | 631 | ipc/shm.c | static unsigned long shm_swap_in(struct vm_area_struct * vma, unsigned long code) |
vma | 85 | kernel/ptrace.c | static unsigned long get_long(struct vm_area_struct * vma, unsigned long addr) |
vma | 90 | kernel/ptrace.c | page = *PAGE_DIR_OFFSET(vma->vm_task->tss.cr3, addr); |
vma | 97 | kernel/ptrace.c | do_no_page(vma, addr, 0); |
vma | 117 | kernel/ptrace.c | static void put_long(struct vm_area_struct * vma, unsigned long addr, |
vma | 124 | kernel/ptrace.c | page = *PAGE_DIR_OFFSET(vma->vm_task->tss.cr3, addr); |
vma | 132 | kernel/ptrace.c | do_no_page(vma, addr, 0 /* PAGE_RW */); |
vma | 138 | kernel/ptrace.c | do_wp_page(vma, addr, PAGE_RW | PAGE_PRESENT); |
vma | 157 | kernel/ptrace.c | struct vm_area_struct * vma; |
vma | 160 | kernel/ptrace.c | for (vma = tsk->mm->mmap ; ; vma = vma->vm_next) { |
vma | 161 | kernel/ptrace.c | if (!vma) |
vma | 163 | kernel/ptrace.c | if (vma->vm_end > addr) |
vma | 166 | kernel/ptrace.c | if (vma->vm_start <= addr) |
vma | 167 | kernel/ptrace.c | return vma; |
vma | 168 | kernel/ptrace.c | if (!(vma->vm_flags & VM_GROWSDOWN)) |
vma | 170 | kernel/ptrace.c | if (vma->vm_end - addr > tsk->rlim[RLIMIT_STACK].rlim_cur) |
vma | 172 | kernel/ptrace.c | vma->vm_offset -= vma->vm_start - addr; |
vma | 173 | kernel/ptrace.c | vma->vm_start = addr; |
vma | 174 | kernel/ptrace.c | return vma; |
vma | 184 | kernel/ptrace.c | struct vm_area_struct * vma = find_vma(tsk, addr); |
vma | 186 | kernel/ptrace.c | if (!vma) |
vma | 190 | kernel/ptrace.c | struct vm_area_struct * vma_high = vma; |
vma | 192 | kernel/ptrace.c | if (addr + sizeof(long) >= vma->vm_end) { |
vma | 193 | kernel/ptrace.c | vma_high = vma->vm_next; |
vma | 194 | kernel/ptrace.c | if (!vma_high || vma_high->vm_start != vma->vm_end) |
vma | 197 | kernel/ptrace.c | low = get_long(vma, addr & ~(sizeof(long)-1)); |
vma | 215 | kernel/ptrace.c | *result = get_long(vma, addr); |
vma | 226 | kernel/ptrace.c | struct vm_area_struct * vma = find_vma(tsk, addr); |
vma | 228 | kernel/ptrace.c | if (!vma) |
vma | 232 | kernel/ptrace.c | struct vm_area_struct * vma_high = vma; |
vma | 234 | kernel/ptrace.c | if (addr + sizeof(long) >= vma->vm_end) { |
vma | 235 | kernel/ptrace.c | vma_high = vma->vm_next; |
vma | 236 | kernel/ptrace.c | if (!vma_high || vma_high->vm_start != vma->vm_end) |
vma | 239 | kernel/ptrace.c | low = get_long(vma, addr & ~(sizeof(long)-1)); |
vma | 264 | kernel/ptrace.c | put_long(vma, addr & ~(sizeof(long)-1),low); |
vma | 267 | kernel/ptrace.c | put_long(vma, addr, data); |
vma | 564 | mm/memory.c | void do_wp_page(struct vm_area_struct * vma, unsigned long address, |
vma | 571 | mm/memory.c | pde = PAGE_DIR_OFFSET(vma->vm_task->tss.cr3,address); |
vma | 586 | mm/memory.c | vma->vm_task->mm->min_flt++; |
vma | 592 | mm/memory.c | ++vma->vm_task->mm->rss; |
vma | 600 | mm/memory.c | oom(vma->vm_task); |
vma | 613 | mm/memory.c | send_sig(SIGKILL, vma->vm_task, 1); |
vma | 618 | mm/memory.c | send_sig(SIGKILL, vma->vm_task, 1); |
vma | 630 | mm/memory.c | struct vm_area_struct * vma; |
vma | 640 | mm/memory.c | for (vma = current->mm->mmap ; ; vma = vma->vm_next) { |
vma | 641 | mm/memory.c | if (!vma) |
vma | 643 | mm/memory.c | if (vma->vm_end > start) |
vma | 646 | mm/memory.c | if (vma->vm_start <= start) |
vma | 648 | mm/memory.c | if (!(vma->vm_flags & VM_GROWSDOWN)) |
vma | 650 | mm/memory.c | if (vma->vm_end - start > current->rlim[RLIMIT_STACK].rlim_cur) |
vma | 658 | mm/memory.c | if (!(vma->vm_page_prot & PAGE_USER)) |
vma | 660 | mm/memory.c | if (type != VERIFY_READ && !(vma->vm_page_prot & (PAGE_COW | PAGE_RW))) |
vma | 662 | mm/memory.c | if (vma->vm_end - start >= size) |
vma | 664 | mm/memory.c | next = vma->vm_next; |
vma | 665 | mm/memory.c | if (!next || vma->vm_end != next->vm_start) |
vma | 667 | mm/memory.c | vma = next; |
vma | 677 | mm/memory.c | if (!(vma->vm_page_prot & (PAGE_COW | PAGE_RW))) |
vma | 679 | mm/memory.c | do_wp_page(vma, start, PAGE_PRESENT); |
vma | 684 | mm/memory.c | if (start < vma->vm_end) |
vma | 686 | mm/memory.c | vma = vma->vm_next; |
vma | 687 | mm/memory.c | if (!vma || vma->vm_start != start) |
vma | 881 | mm/memory.c | static inline void do_swap_page(struct vm_area_struct * vma, |
vma | 886 | mm/memory.c | if (vma->vm_ops && vma->vm_ops->swapin) |
vma | 887 | mm/memory.c | page = vma->vm_ops->swapin(vma, entry); |
vma | 894 | mm/memory.c | page = page | vma->vm_page_prot; |
vma | 897 | mm/memory.c | ++vma->vm_task->mm->rss; |
vma | 898 | mm/memory.c | ++vma->vm_task->mm->maj_flt; |
vma | 903 | mm/memory.c | void do_no_page(struct vm_area_struct * vma, unsigned long address, |
vma | 908 | mm/memory.c | page = get_empty_pgtable(vma->vm_task,address); |
vma | 917 | mm/memory.c | do_swap_page(vma, address, (unsigned long *) page, entry); |
vma | 922 | mm/memory.c | if (!vma->vm_ops || !vma->vm_ops->nopage) { |
vma | 923 | mm/memory.c | ++vma->vm_task->mm->rss; |
vma | 924 | mm/memory.c | ++vma->vm_task->mm->min_flt; |
vma | 925 | mm/memory.c | get_empty_page(vma->vm_task,address); |
vma | 929 | mm/memory.c | if (share_page(vma, address, error_code, page)) { |
vma | 930 | mm/memory.c | ++vma->vm_task->mm->min_flt; |
vma | 931 | mm/memory.c | ++vma->vm_task->mm->rss; |
vma | 936 | mm/memory.c | put_page(vma->vm_task, BAD_PAGE, address, PAGE_PRIVATE); |
vma | 939 | mm/memory.c | ++vma->vm_task->mm->maj_flt; |
vma | 940 | mm/memory.c | ++vma->vm_task->mm->rss; |
vma | 941 | mm/memory.c | prot = vma->vm_page_prot; |
vma | 947 | mm/memory.c | page = vma->vm_ops->nopage(vma, address, page, (error_code & PAGE_RW) && (prot & PAGE_COW)); |
vma | 948 | mm/memory.c | if (share_page(vma, address, error_code, 0)) { |
vma | 960 | mm/memory.c | if (put_page(vma->vm_task, page, address, prot)) |
vma | 973 | mm/memory.c | struct vm_area_struct * vma; |
vma | 979 | mm/memory.c | for (vma = current->mm->mmap ; ; vma = vma->vm_next) { |
vma | 980 | mm/memory.c | if (!vma) |
vma | 982 | mm/memory.c | if (vma->vm_end > address) |
vma | 985 | mm/memory.c | if (vma->vm_start <= address) |
vma | 987 | mm/memory.c | if (!(vma->vm_flags & VM_GROWSDOWN)) |
vma | 989 | mm/memory.c | if (vma->vm_end - address > current->rlim[RLIMIT_STACK].rlim_cur) |
vma | 991 | mm/memory.c | vma->vm_offset -= vma->vm_start - (address & PAGE_MASK); |
vma | 992 | mm/memory.c | vma->vm_start = (address & PAGE_MASK); |
vma | 1003 | mm/memory.c | if (!(vma->vm_page_prot & PAGE_USER)) |
vma | 1006 | mm/memory.c | if (!(vma->vm_page_prot & (PAGE_RW | PAGE_COW))) |
vma | 1012 | mm/memory.c | do_wp_page(vma, address, error_code); |
vma | 1015 | mm/memory.c | do_no_page(vma, address, error_code); |
vma | 42 | mm/mmap.c | struct vm_area_struct * vma; |
vma | 124 | mm/mmap.c | vma = kmalloc(sizeof(struct vm_area_struct), GFP_KERNEL); |
vma | 125 | mm/mmap.c | if (!vma) |
vma | 128 | mm/mmap.c | vma->vm_task = current; |
vma | 129 | mm/mmap.c | vma->vm_start = addr; |
vma | 130 | mm/mmap.c | vma->vm_end = addr + len; |
vma | 131 | mm/mmap.c | vma->vm_page_prot = mask; |
vma | 132 | mm/mmap.c | vma->vm_flags = prot & (VM_READ | VM_WRITE | VM_EXEC); |
vma | 133 | mm/mmap.c | vma->vm_flags |= flags & (VM_GROWSDOWN | VM_DENYWRITE); |
vma | 137 | mm/mmap.c | vma->vm_flags |= VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC; |
vma | 139 | mm/mmap.c | vma->vm_flags |= VM_SHARED | VM_MAYSHARE; |
vma | 141 | mm/mmap.c | vma->vm_flags &= ~VM_MAYWRITE; |
vma | 144 | mm/mmap.c | vma->vm_flags |= VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC; |
vma | 145 | mm/mmap.c | vma->vm_ops = NULL; |
vma | 146 | mm/mmap.c | vma->vm_offset = off; |
vma | 147 | mm/mmap.c | vma->vm_inode = NULL; |
vma | 148 | mm/mmap.c | vma->vm_pte = 0; |
vma | 153 | mm/mmap.c | error = file->f_op->mmap(file->f_inode, file, vma); |
vma | 155 | mm/mmap.c | error = anon_map(NULL, NULL, vma); |
vma | 158 | mm/mmap.c | kfree(vma); |
vma | 163 | mm/mmap.c | insert_vm_struct(current, vma); |
vma | 338 | mm/mmap.c | int generic_mmap(struct inode * inode, struct file * file, struct vm_area_struct * vma) |
vma | 342 | mm/mmap.c | if (vma->vm_page_prot & PAGE_RW) /* only PAGE_COW or read-only supported right now */ |
vma | 344 | mm/mmap.c | if (vma->vm_offset & (inode->i_sb->s_blocksize - 1)) |
vma | 354 | mm/mmap.c | vma->vm_inode = inode; |
vma | 356 | mm/mmap.c | vma->vm_ops = &file_mmap; |
vma | 435 | mm/mmap.c | static int anon_map(struct inode *ino, struct file * file, struct vm_area_struct * vma) |
vma | 437 | mm/mmap.c | if (zeromap_page_range(vma->vm_start, vma->vm_end - vma->vm_start, vma->vm_page_prot)) |
vma | 53 | mm/mprotect.c | static inline int mprotect_fixup_all(struct vm_area_struct * vma, |
vma | 56 | mm/mprotect.c | vma->vm_flags = newflags; |
vma | 57 | mm/mprotect.c | vma->vm_page_prot = prot; |
vma | 62 | mm/mprotect.c | static inline int mprotect_fixup_start(struct vm_area_struct * vma, |
vma | 71 | mm/mprotect.c | *new = *vma; |
vma | 72 | mm/mprotect.c | vma->vm_start = end; |
vma | 74 | mm/mprotect.c | vma->vm_offset += vma->vm_start - new->vm_start; |
vma | 84 | mm/mprotect.c | static inline int mprotect_fixup_end(struct vm_area_struct * vma, |
vma | 93 | mm/mprotect.c | *new = *vma; |
vma | 94 | mm/mprotect.c | vma->vm_end = start; |
vma | 96 | mm/mprotect.c | new->vm_offset += new->vm_start - vma->vm_start; |
vma | 106 | mm/mprotect.c | static inline int mprotect_fixup_middle(struct vm_area_struct * vma, |
vma | 113 | mm/mprotect.c | tmpflags = vma->vm_flags; |
vma | 114 | mm/mprotect.c | tmpprot = vma->vm_page_prot; |
vma | 115 | mm/mprotect.c | vma->vm_flags = newflags; |
vma | 116 | mm/mprotect.c | vma->vm_page_prot = prot; |
vma | 117 | mm/mprotect.c | error = mprotect_fixup_end(vma, end, tmpflags, tmpprot); |
vma | 119 | mm/mprotect.c | error = mprotect_fixup_start(vma, start, tmpflags, tmpprot); |
vma | 123 | mm/mprotect.c | static int mprotect_fixup(struct vm_area_struct * vma, |
vma | 128 | mm/mprotect.c | if (newflags == vma->vm_flags) |
vma | 139 | mm/mprotect.c | if (start == vma->vm_start) |
vma | 140 | mm/mprotect.c | if (end == vma->vm_end) |
vma | 141 | mm/mprotect.c | error = mprotect_fixup_all(vma, newflags, prot); |
vma | 143 | mm/mprotect.c | error = mprotect_fixup_start(vma, end, newflags, prot); |
vma | 144 | mm/mprotect.c | else if (end == vma->vm_end) |
vma | 145 | mm/mprotect.c | error = mprotect_fixup_end(vma, start, newflags, prot); |
vma | 147 | mm/mprotect.c | error = mprotect_fixup_middle(vma, start, end, newflags, prot); |
vma | 159 | mm/mprotect.c | struct vm_area_struct * vma; |
vma | 171 | mm/mprotect.c | for (vma = current->mm->mmap ; ; vma = vma->vm_next) { |
vma | 172 | mm/mprotect.c | if (!vma) |
vma | 174 | mm/mprotect.c | if (vma->vm_end > start) |
vma | 177 | mm/mprotect.c | if (vma->vm_start > start) |
vma | 184 | mm/mprotect.c | newflags = prot | (vma->vm_flags & ~(PROT_READ | PROT_WRITE | PROT_EXEC)); |
vma | 188 | mm/mprotect.c | if (vma->vm_end >= end) |
vma | 189 | mm/mprotect.c | return mprotect_fixup(vma, start, end, newflags); |
vma | 191 | mm/mprotect.c | error = mprotect_fixup(vma, start, vma->vm_end, newflags); |
vma | 194 | mm/mprotect.c | start = vma->vm_end; |
vma | 195 | mm/mprotect.c | vma = vma->vm_next; |
vma | 196 | mm/mprotect.c | if (!vma || vma->vm_start != start) |