kernel-6.5.patch 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. diff --git a/kernel/common/inc/nv-mm.h b/kernel/common/inc/nv-mm.h
  2. index aec55b0..acd396d 100644
  3. --- a/kernel/common/inc/nv-mm.h
  4. +++ b/kernel/common/inc/nv-mm.h
  5. @@ -23,6 +23,7 @@
  6. #ifndef __NV_MM_H__
  7. #define __NV_MM_H__
  8. +#include <linux/version.h>
  9. #include "conftest.h"
  10. #if !defined(NV_VM_FAULT_T_IS_PRESENT)
  11. @@ -47,7 +48,27 @@ typedef int vm_fault_t;
  12. *
  13. */
  14. -#if defined(NV_GET_USER_PAGES_HAS_TASK_STRUCT)
  15. +// Rel. commit. "mm/gup: remove unused vmas parameter from get_user_pages()" (Lorenzo Stoakes, 14 May 2023)
  16. +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 5, 0)
  17. +#include <linux/mm.h>
  18. +
  19. +static inline long NV_GET_USER_PAGES(unsigned long start,
  20. + unsigned long nr_pages,
  21. + int write,
  22. + int force,
  23. + struct page **pages,
  24. + struct vm_area_struct **vmas)
  25. +{
  26. + unsigned int flags = 0;
  27. +
  28. + if (write)
  29. + flags |= FOLL_WRITE;
  30. + if (force)
  31. + flags |= FOLL_FORCE;
  32. +
  33. + return get_user_pages(start, nr_pages, flags, pages);
  34. +}
  35. +#elif defined(NV_GET_USER_PAGES_HAS_TASK_STRUCT)
  36. #if defined(NV_GET_USER_PAGES_HAS_WRITE_AND_FORCE_ARGS)
  37. #define NV_GET_USER_PAGES(start, nr_pages, write, force, pages, vmas) \
  38. get_user_pages(current, current->mm, start, nr_pages, write, force, pages, vmas)
  39. @@ -130,7 +151,27 @@ typedef int vm_fault_t;
  40. *
  41. */
  42. -#if defined(NV_GET_USER_PAGES_REMOTE_PRESENT)
  43. +// Rel. commit. "mm/gup: remove unused vmas parameter from get_user_pages_remote()" (Lorenzo Stoakes, 14 May 2023)
  44. +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 5, 0)
  45. +static inline long NV_GET_USER_PAGES_REMOTE(struct task_struct *tsk,
  46. + struct mm_struct *mm,
  47. + unsigned long start,
  48. + unsigned long nr_pages,
  49. + int write,
  50. + int force,
  51. + struct page **pages,
  52. + struct vm_area_struct **vmas)
  53. +{
  54. + unsigned int flags = 0;
  55. +
  56. + if (write)
  57. + flags |= FOLL_WRITE;
  58. + if (force)
  59. + flags |= FOLL_FORCE;
  60. +
  61. + return get_user_pages_remote(mm, start, nr_pages, flags, pages, NULL);
  62. +}
  63. +#elif defined(NV_GET_USER_PAGES_REMOTE_PRESENT)
  64. #if defined(NV_GET_USER_PAGES_REMOTE_HAS_WRITE_AND_FORCE_ARGS)
  65. #define NV_GET_USER_PAGES_REMOTE get_user_pages_remote
  66. #else