]> git.ipfire.org Git - thirdparty/kernel/linux.git/blobdiff - arch/x86/entry/vdso/vma.c
x86: convert vdso to use vm_fault_t
[thirdparty/kernel/linux.git] / arch / x86 / entry / vdso / vma.c
index 3f9d43f26f630b29ef9cb53f39d9f2079df84a06..7eb878561910f168b82a84bb4c52efdd5a901595 100644 (file)
@@ -39,7 +39,7 @@ void __init init_vdso_image(const struct vdso_image *image)
 
 struct linux_binprm;
 
-static int vdso_fault(const struct vm_special_mapping *sm,
+static vm_fault_t vdso_fault(const struct vm_special_mapping *sm,
                      struct vm_area_struct *vma, struct vm_fault *vmf)
 {
        const struct vdso_image *image = vma->vm_mm->context.vdso_image;
@@ -84,12 +84,11 @@ static int vdso_mremap(const struct vm_special_mapping *sm,
        return 0;
 }
 
-static int vvar_fault(const struct vm_special_mapping *sm,
+static vm_fault_t vvar_fault(const struct vm_special_mapping *sm,
                      struct vm_area_struct *vma, struct vm_fault *vmf)
 {
        const struct vdso_image *image = vma->vm_mm->context.vdso_image;
        long sym_offset;
-       int ret = -EFAULT;
 
        if (!image)
                return VM_FAULT_SIGBUS;
@@ -108,29 +107,24 @@ static int vvar_fault(const struct vm_special_mapping *sm,
                return VM_FAULT_SIGBUS;
 
        if (sym_offset == image->sym_vvar_page) {
-               ret = vm_insert_pfn(vma, vmf->address,
-                                   __pa_symbol(&__vvar_page) >> PAGE_SHIFT);
+               return vmf_insert_pfn(vma, vmf->address,
+                               __pa_symbol(&__vvar_page) >> PAGE_SHIFT);
        } else if (sym_offset == image->sym_pvclock_page) {
                struct pvclock_vsyscall_time_info *pvti =
                        pvclock_get_pvti_cpu0_va();
                if (pvti && vclock_was_used(VCLOCK_PVCLOCK)) {
-                       ret = vm_insert_pfn_prot(
-                               vma,
-                               vmf->address,
-                               __pa(pvti) >> PAGE_SHIFT,
-                               pgprot_decrypted(vma->vm_page_prot));
+                       return vmf_insert_pfn_prot(vma, vmf->address,
+                                       __pa(pvti) >> PAGE_SHIFT,
+                                       pgprot_decrypted(vma->vm_page_prot));
                }
        } else if (sym_offset == image->sym_hvclock_page) {
                struct ms_hyperv_tsc_page *tsc_pg = hv_get_tsc_page();
 
                if (tsc_pg && vclock_was_used(VCLOCK_HVCLOCK))
-                       ret = vm_insert_pfn(vma, vmf->address,
-                                           vmalloc_to_pfn(tsc_pg));
+                       return vmf_insert_pfn(vma, vmf->address,
+                                       vmalloc_to_pfn(tsc_pg));
        }
 
-       if (ret == 0 || ret == -EBUSY)
-               return VM_FAULT_NOPAGE;
-
        return VM_FAULT_SIGBUS;
 }