You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1.3 KiB

  1. --- a/kernel/common/inc/nv-linux.h
  2. +++ b/kernel/common/inc/nv-linux.h
  3. @@ -1990,2 +1990,23 @@
  4. +#if defined(CONFIG_HAVE_ARCH_PFN_VALID) || LINUX_VERSION_CODE < KERNEL_VERSION(6,1,76)
  5. +# define nv_pfn_valid pfn_valid
  6. +#else
  7. +/* pre-6.1.76 kernel pfn_valid version without GPL rcu_read_lock/unlock() */
  8. +static inline int nv_pfn_valid(unsigned long pfn)
  9. +{
  10. + struct mem_section *ms;
  11. +
  12. + if (PHYS_PFN(PFN_PHYS(pfn)) != pfn)
  13. + return 0;
  14. +
  15. + if (pfn_to_section_nr(pfn) >= NR_MEM_SECTIONS)
  16. + return 0;
  17. +
  18. + ms = __pfn_to_section(pfn);
  19. + if (!valid_section(ms))
  20. + return 0;
  21. +
  22. + return early_section(ms) || pfn_section_valid(ms, pfn);
  23. +}
  24. +#endif
  25. #endif /* _NV_LINUX_H_ */
  26. --- a/kernel/nvidia/nv-mmap.c
  27. +++ b/kernel/nvidia/nv-mmap.c
  28. @@ -576,3 +576,3 @@
  29. if (!IS_REG_OFFSET(nv, access_start, access_len) &&
  30. - (pfn_valid(PFN_DOWN(mmap_start))))
  31. + (nv_pfn_valid(PFN_DOWN(mmap_start))))
  32. {
  33. --- a/kernel/nvidia/os-mlock.c
  34. +++ b/kernel/nvidia/os-mlock.c
  35. @@ -102,3 +102,3 @@
  36. if ((nv_follow_pfn(vma, (start + (i * PAGE_SIZE)), &pfn) < 0) ||
  37. - (!pfn_valid(pfn)))
  38. + (!nv_pfn_valid(pfn)))
  39. {
  40. @@ -176,3 +176,3 @@
  41. - if (pfn_valid(pfn))
  42. + if (nv_pfn_valid(pfn))
  43. {