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) {