todo: modpost undefined errors
This commit is contained in:
@@ -733,7 +733,7 @@ static struct vm_operations_struct rus_vmops = {
|
||||
|
||||
static int rus_mmap(struct file *file, struct vm_area_struct *vma)
|
||||
{
|
||||
vma->vm_flags |= arch_rus_vm_flags;
|
||||
vm_flags_set(vma, arch_rus_vm_flags);
|
||||
vma->vm_ops = &rus_vmops;
|
||||
return 0;
|
||||
}
|
||||
@@ -776,10 +776,10 @@ reserve_user_space_common(struct mcctrl_usrdata *usrdata, unsigned long start, u
|
||||
#if 0
|
||||
{ /* debug */
|
||||
struct vm_area_struct *vma;
|
||||
down_write(¤t->mm->mmap_sem);
|
||||
mmap_write_lock(current->mm);
|
||||
vma = find_vma(current->mm, start);
|
||||
vma->vm_flags |= VM_DONTCOPY;
|
||||
up_write(¤t->mm->mmap_sem);
|
||||
vm_flags_set(vma, VM_DONTCOPY);
|
||||
mmap_write_unlock(current->mm);
|
||||
}
|
||||
#endif
|
||||
revert_creds(original);
|
||||
@@ -1463,12 +1463,12 @@ static int pager_req_map(ihk_os_t os, int fd, size_t len, off_t off,
|
||||
}
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)
|
||||
down_write(¤t->mm->mmap_sem);
|
||||
mmap_write_lock(current->mm);
|
||||
|
||||
va = do_mmap_pgoff(file, ANY_WHERE, len, maxprot,
|
||||
prot_and_flags, pgoff);
|
||||
|
||||
up_write(¤t->mm->mmap_sem);
|
||||
mmap_write_unlock(current->mm);
|
||||
#else
|
||||
va = vm_mmap(file, ANY_WHERE, len, maxprot,
|
||||
prot_and_flags, pgoff << PAGE_SHIFT);
|
||||
@@ -1571,7 +1571,7 @@ static int pager_req_pfn(ihk_os_t os, uintptr_t handle, off_t off, uintptr_t ppf
|
||||
#define PFN_VALID ((uintptr_t)1 << 63)
|
||||
pfn = PFN_VALID; /* Use "not present" as the default setting */
|
||||
|
||||
down_read(¤t->mm->mmap_sem);
|
||||
mmap_read_lock(current->mm);
|
||||
retry:
|
||||
pgd = pgd_offset(current->mm, va);
|
||||
if (!pgd_none(*pgd) && !pgd_bad(*pgd) && pgd_present(*pgd)) {
|
||||
@@ -1623,7 +1623,9 @@ retry:
|
||||
goto out_release;
|
||||
}
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0) || \
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0)
|
||||
fault = handle_mm_fault(vma, va, flags, NULL);
|
||||
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0) || \
|
||||
(defined(RHEL_RELEASE_CODE) && RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7, 5))
|
||||
fault = handle_mm_fault(vma, va, flags);
|
||||
#else
|
||||
@@ -1656,7 +1658,7 @@ retry:
|
||||
}
|
||||
|
||||
out_release:
|
||||
up_read(¤t->mm->mmap_sem);
|
||||
mmap_read_unlock(current->mm);
|
||||
|
||||
phys = ihk_device_map_memory(dev, ppfn_rpa, sizeof(*ppfn));
|
||||
ppfn = ihk_device_map_virtual(dev, phys, sizeof(*ppfn), NULL, 0);
|
||||
@@ -1682,9 +1684,9 @@ static int __pager_unmap(struct pager *pager)
|
||||
int error;
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)
|
||||
down_write(¤t->mm->mmap_sem);
|
||||
mmap_write_lock(current->mm);
|
||||
error = do_munmap(current->mm, pager->map_uaddr, pager->map_len);
|
||||
up_write(¤t->mm->mmap_sem);
|
||||
mmap_write_unlock(current->mm);
|
||||
#else
|
||||
error = vm_munmap(pager->map_uaddr, pager->map_len);
|
||||
#endif
|
||||
@@ -1749,9 +1751,11 @@ static long pager_req_mlock_list(ihk_os_t os, unsigned long start,
|
||||
struct vm_area_struct *vma;
|
||||
|
||||
kprintf("pager_req_mlock_list: addr(%p)\n", addr);
|
||||
vma = find_vma(current->mm, 0x7010a0);
|
||||
for (vma = mm->mmap; vma != NULL; vma = vma->vm_next) {
|
||||
if (vma->vm_start < start || vma->vm_start > end) continue;
|
||||
|
||||
/* Use find_vma to iterate through VMAs */
|
||||
vma = find_vma(mm, start);
|
||||
while (vma != NULL) {
|
||||
if (vma->vm_start > end) break;
|
||||
kprintf("\t%p: %p -- %p\t%lx\n", vma,
|
||||
(void*)vma->vm_start, (void*)vma->vm_end,
|
||||
vma->vm_flags & VM_LOCKED);
|
||||
@@ -1766,6 +1770,8 @@ static long pager_req_mlock_list(ihk_os_t os, unsigned long start,
|
||||
addrpair->flag = vma->vm_flags;
|
||||
addrpair++;
|
||||
}
|
||||
/* Use find_vma to get next VMA */
|
||||
vma = find_vma(mm, vma->vm_end);
|
||||
}
|
||||
full:
|
||||
return cnt;
|
||||
@@ -2129,14 +2135,14 @@ static int remap_user_space(uintptr_t rva, size_t len, int prot)
|
||||
uintptr_t map;
|
||||
|
||||
dprintk("remap_user_space(%lx,%lx,%x)\n", rva, len, prot);
|
||||
down_write(&mm->mmap_sem);
|
||||
mmap_write_lock(mm);
|
||||
vma = find_vma(mm, rva);
|
||||
if (!vma || (rva < vma->vm_start)) {
|
||||
printk("remap_user_space(%lx,%lx,%x):find_vma failed. %p %lx %lx\n",
|
||||
rva, len, prot, vma,
|
||||
(vma)? vma->vm_start: -1,
|
||||
(vma)? vma->vm_end: 0);
|
||||
up_write(&mm->mmap_sem);
|
||||
mmap_write_unlock(mm);
|
||||
map = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
@@ -2150,7 +2156,7 @@ static int remap_user_space(uintptr_t rva, size_t len, int prot)
|
||||
prot, MAP_FIXED|MAP_SHARED, pgoff);
|
||||
#endif
|
||||
|
||||
up_write(&mm->mmap_sem);
|
||||
mmap_write_unlock(mm);
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)
|
||||
map = vm_mmap(file, start, len,
|
||||
@@ -2175,7 +2181,7 @@ int mcctrl_clear_pte_range(uintptr_t start, uintptr_t len)
|
||||
int ret;
|
||||
|
||||
ret = 0;
|
||||
down_read(&mm->mmap_sem);
|
||||
mmap_read_lock(mm);
|
||||
addr = start;
|
||||
while (addr < (start + len)) {
|
||||
vma = find_vma(mm, addr);
|
||||
@@ -2193,7 +2199,7 @@ int mcctrl_clear_pte_range(uintptr_t start, uintptr_t len)
|
||||
if (addr < end) {
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0)
|
||||
/* Revert permission */
|
||||
vma->vm_flags |= VM_READ | VM_WRITE | VM_EXEC;
|
||||
vm_flags_set(vma, VM_READ | VM_WRITE | VM_EXEC);
|
||||
error = zap_vma_ptes(vma, addr, end-addr);
|
||||
if (error) {
|
||||
mcctrl_zap_page_range(vma, addr, end-addr,
|
||||
@@ -2212,14 +2218,14 @@ int mcctrl_clear_pte_range(uintptr_t start, uintptr_t len)
|
||||
}
|
||||
else {
|
||||
/* Revert permission */
|
||||
vma->vm_flags |= VM_READ | VM_WRITE | VM_EXEC;
|
||||
vm_flags_set(vma, VM_READ | VM_WRITE | VM_EXEC);
|
||||
zap_vma_ptes(vma, addr, end-addr);
|
||||
}
|
||||
#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0) */
|
||||
}
|
||||
addr = end;
|
||||
}
|
||||
up_read(&mm->mmap_sem);
|
||||
mmap_read_unlock(mm);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user