Lines Matching refs:mm
29 struct mm_struct *mm = current->mm; in mpx_mmap() local
37 down_write(&mm->mmap_sem); in mpx_mmap()
40 if (mm->map_count > sysctl_max_map_count) { in mpx_mmap()
55 mm->def_flags | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC; in mpx_mmap()
64 vma = find_vma(mm, ret); in mpx_mmap()
71 up_write(&mm->mmap_sem); in mpx_mmap()
77 up_write(&mm->mmap_sem); in mpx_mmap()
366 struct mm_struct *mm = tsk->mm; in mpx_enable_management() local
380 down_write(&mm->mmap_sem); in mpx_enable_management()
381 mm->bd_addr = bd_base; in mpx_enable_management()
382 if (mm->bd_addr == MPX_INVALID_BOUNDS_DIR) in mpx_enable_management()
385 up_write(&mm->mmap_sem); in mpx_enable_management()
391 struct mm_struct *mm = current->mm; in mpx_disable_management() local
396 down_write(&mm->mmap_sem); in mpx_disable_management()
397 mm->bd_addr = MPX_INVALID_BOUNDS_DIR; in mpx_disable_management()
398 up_write(&mm->mmap_sem); in mpx_disable_management()
517 if (!kernel_managing_mpx_tables(current->mm)) in mpx_handle_bd_fault()
541 gup_ret = get_user_pages(current, current->mm, (unsigned long)addr, in mpx_resolve_fault()
561 static int get_bt_addr(struct mm_struct *mm, in get_bt_addr() argument
616 static int zap_bt_entries(struct mm_struct *mm, in zap_bt_entries() argument
628 vma = find_vma(mm, start); in zap_bt_entries()
659 static int unmap_single_bt(struct mm_struct *mm, in unmap_single_bt() argument
711 return do_munmap(mm, bt_addr, MPX_BT_SIZE_BYTES); in unmap_single_bt()
720 static int unmap_shared_bt(struct mm_struct *mm, in unmap_shared_bt() argument
727 ret = get_bt_addr(mm, bd_entry, &bt_addr); in unmap_shared_bt()
737 ret = zap_bt_entries(mm, bt_addr, in unmap_shared_bt()
741 ret = zap_bt_entries(mm, bt_addr, in unmap_shared_bt()
745 ret = zap_bt_entries(mm, bt_addr, bt_addr, in unmap_shared_bt()
748 ret = unmap_single_bt(mm, bd_entry, bt_addr); in unmap_shared_bt()
759 static int unmap_edge_bts(struct mm_struct *mm, in unmap_edge_bts() argument
767 bde_start = mm->bd_addr + MPX_GET_BD_ENTRY_OFFSET(start); in unmap_edge_bts()
768 bde_end = mm->bd_addr + MPX_GET_BD_ENTRY_OFFSET(end-1); in unmap_edge_bts()
779 next = find_vma_prev(mm, start, &prev); in unmap_edge_bts()
780 if (prev && (mm->bd_addr + MPX_GET_BD_ENTRY_OFFSET(prev->vm_end-1)) in unmap_edge_bts()
783 if (next && (mm->bd_addr + MPX_GET_BD_ENTRY_OFFSET(next->vm_start)) in unmap_edge_bts()
797 return unmap_shared_bt(mm, bde_start, start, end, in unmap_edge_bts()
806 ret = unmap_shared_bt(mm, bde_start, start, end, prev_shared, false); in unmap_edge_bts()
809 ret = unmap_shared_bt(mm, bde_end, start, end, false, next_shared); in unmap_edge_bts()
816 static int mpx_unmap_tables(struct mm_struct *mm, in mpx_unmap_tables() argument
830 ret = unmap_edge_bts(mm, start, end); in mpx_unmap_tables()
848 bde_start = mm->bd_addr + MPX_GET_BD_ENTRY_OFFSET(start); in mpx_unmap_tables()
849 bde_end = mm->bd_addr + MPX_GET_BD_ENTRY_OFFSET(end-1); in mpx_unmap_tables()
851 ret = get_bt_addr(mm, bd_entry, &bt_addr); in mpx_unmap_tables()
870 ret = unmap_single_bt(mm, bd_entry, bt_addr); in mpx_unmap_tables()
886 void mpx_notify_unmap(struct mm_struct *mm, struct vm_area_struct *vma, in mpx_notify_unmap() argument
895 if (!kernel_managing_mpx_tables(current->mm)) in mpx_notify_unmap()
913 ret = mpx_unmap_tables(mm, start, end); in mpx_notify_unmap()