1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
diff -urp work.orig/kernel/common/inc/nv-linux.h work/kernel/common/inc/nv-linux.h
--- work.orig/kernel/common/inc/nv-linux.h 2017-09-29 06:17:46.000000000 +0200
+++ work/kernel/common/inc/nv-linux.h 2017-10-08 00:52:42.721523788 +0200
@@ -1189,7 +1189,8 @@ extern void *nvidia_stack_t_cache;
#if (NV_KMEM_CACHE_CREATE_ARGUMENT_COUNT == 5)
#define NV_KMEM_CACHE_CREATE_FULL(name, size, align, flags, ctor) \
kmem_cache_create(name, size, align, flags, ctor)
-
+#define NV_KMEM_CACHE_CREATE_FULL_USERCOPY(name, size, align, flags, useroffset, usersize, ctor) \
+ kmem_cache_create_usercopy(name, size, align, flags, useroffset, usersize, ctor)
#else
#define NV_KMEM_CACHE_CREATE_FULL(name, size, align, flags, ctor) \
kmem_cache_create(name, size, align, flags, ctor, NULL)
@@ -1198,6 +1199,9 @@ extern void *nvidia_stack_t_cache;
#define NV_KMEM_CACHE_CREATE(name, type) \
NV_KMEM_CACHE_CREATE_FULL(name, sizeof(type), 0, 0, NULL)
+#define NV_KMEM_CACHE_CREATE_USERCOPY(name, type) \
+ NV_KMEM_CACHE_CREATE_FULL_USERCOPY(name, sizeof(type), 0, 0, 0, sizeof(type), NULL)
+
#define NV_KMEM_CACHE_DESTROY(kmem_cache) \
kmem_cache_destroy(kmem_cache)
diff -urp work.orig/kernel/nvidia/nv.c work/kernel/nvidia/nv.c
--- work.orig/kernel/nvidia/nv.c 2017-09-29 06:17:45.000000000 +0200
+++ work/kernel/nvidia/nv.c 2017-10-08 00:52:42.721523788 +0200
@@ -682,7 +682,7 @@ int __init nvidia_init_module(void)
nv_memdbg_init();
- nvidia_stack_t_cache = NV_KMEM_CACHE_CREATE(nvidia_stack_cache_name,
+ nvidia_stack_t_cache = NV_KMEM_CACHE_CREATE_USERCOPY(nvidia_stack_cache_name,
nvidia_stack_t);
if (nvidia_stack_t_cache == NULL)
{
|