1 --- NVIDIA-Linux-x86_64-390.87-no-compat32/kernel/conftest.sh~ 2018-08-22 06:47:57.000000000 +0900
2 +++ NVIDIA-Linux-x86_64-390.87-no-compat32/kernel/conftest.sh 2018-12-29 09:33:30.537541114 +0900
7 + # Conftest #3: Check if get_user_pages has gup_flags instead of write and force parameters.
8 + # Return if available.
9 + # Fall through to default case if absent.
11 + echo "$CONFTEST_PREAMBLE
12 + #include <linux/mm.h>
13 + long get_user_pages(struct task_struct *tsk,
14 + struct mm_struct *mm,
15 + unsigned long start,
16 + unsigned long nr_pages,
17 + unsigned int gup_flags,
18 + struct page **pages,
19 + struct vm_area_struct **vmas) {
23 + $CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
26 + if [ -f conftest$$.o ]; then
27 + echo "#undef NV_GET_USER_PAGES_HAS_WRITE_AND_FORCE_ARGS" | append_conftest "functions"
28 + echo "#define NV_GET_USER_PAGES_HAS_TASK_STRUCT" | append_conftest "functions"
33 echo "#define NV_GET_USER_PAGES_HAS_WRITE_AND_FORCE_ARGS" | append_conftest "functions"
34 echo "#define NV_GET_USER_PAGES_HAS_TASK_STRUCT" | append_conftest "functions"
36 --- NVIDIA-Linux-x86_64-390.87-no-compat32/kernel/common/inc/nv-mm.h~ 2018-08-22 09:55:23.000000000 +0900
37 +++ NVIDIA-Linux-x86_64-390.87-no-compat32/kernel/common/inc/nv-mm.h 2018-12-29 09:30:55.797962776 +0900
41 #if defined(NV_GET_USER_PAGES_HAS_TASK_STRUCT)
42 + #if defined(NV_GET_USER_PAGES_HAS_WRITE_AND_FORCE_ARGS)
43 #define NV_GET_USER_PAGES(start, nr_pages, write, force, pages, vmas) \
44 get_user_pages(current, current->mm, start, nr_pages, write, force, pages, vmas)
46 + #include <asm/current.h>
47 + #include <linux/mm.h>
48 + #include <linux/sched.h>
50 + static inline long NV_GET_USER_PAGES(unsigned long start,
51 + unsigned long nr_pages,
54 + struct page **pages,
55 + struct vm_area_struct **vmas)
57 + unsigned int flags = 0;
60 + flags |= FOLL_WRITE;
62 + flags |= FOLL_FORCE;
64 + return get_user_pages(current, current->mm, start, nr_pages, flags, pages, vmas);
68 #if defined(NV_GET_USER_PAGES_HAS_WRITE_AND_FORCE_ARGS)
69 #define NV_GET_USER_PAGES get_user_pages
74 - #define NV_GET_USER_PAGES_REMOTE get_user_pages
75 + #if defined(NV_GET_USER_PAGES_HAS_WRITE_AND_FORCE_ARGS)
76 + #define NV_GET_USER_PAGES_REMOTE get_user_pages
78 + #include <asm/current.h>
79 + #include <linux/mm.h>
80 + #include <linux/sched.h>
82 + static inline long NV_GET_USER_PAGES_REMOTE(struct task_struct *tsk,
83 + struct mm_struct *mm,
84 + unsigned long start,
85 + unsigned long nr_pages,
88 + struct page **pages,
89 + struct vm_area_struct **vmas)
91 + unsigned int flags = 0;
94 + flags |= FOLL_WRITE;
96 + flags |= FOLL_FORCE;
98 + return get_user_pages(tsk, mm, start, nr_pages, flags, pages, vmas);