nvidia-merged/nvidia-follow-pfn-reimpl.patch
Lily Tsuru 89d0c5e0ab Add all 6.1x support patches
Also, add an option to disable them to gracefully still allow the module to build on 6.8 and earlier kernels.
2024-09-29 23:36:46 -04:00

33 lines
938 B
Diff

diff --git a/kernel-orig/nvidia/os-mlock.c b/kernel/nvidia/os-mlock.c
index e378245..37c5daf 100644
--- a/kernel-orig/nvidia/os-mlock.c
+++ b/kernel/nvidia/os-mlock.c
@@ -30,11 +30,22 @@ static inline int nv_follow_pfn(struct vm_area_struct *vma,
unsigned long address,
unsigned long *pfn)
{
-#if defined(NV_UNSAFE_FOLLOW_PFN_PRESENT)
- return unsafe_follow_pfn(vma, address, pfn);
-#else
- return follow_pfn(vma, address, pfn);
-#endif
+ /* follow_pfn was removed in Linux 6.10. */
+ int status = 0;
+ spinlock_t *ptl;
+ pte_t *ptep;
+
+ if (!(vma->vm_flags & (VM_IO | VM_PFNMAP)))
+ return status;
+
+ status = follow_pte(vma, address, &ptep, &ptl);
+ if (status)
+ return status;
+ *pfn = pte_pfn(ptep_get(ptep));
+
+ // The lock is acquired inside follow_pte()
+ pte_unmap_unlock(ptep, ptl);
+ return 0;
}
/*!