]> git.proxmox.com Git - mirror_spl.git/blobdiff - module/spl/spl-kmem-cache.c
Add support for recent kmem_cache_create_usercopy
[mirror_spl.git] / module / spl / spl-kmem-cache.c
index 99967b14fdb20ad3926e9c7c7a1fd0a4181b35df..45576b9761e72863495bd6c5e8259b5d85bcec36 100644 (file)
@@ -1001,8 +1001,17 @@ spl_kmem_cache_create(char *name, size_t size, size_t align,
                slabflags |= SLAB_USERCOPY;
 #endif
 
-               skc->skc_linux_cache = kmem_cache_create(
-                   skc->skc_name, size, align, slabflags, NULL);
+#if defined(HAVE_KMEM_CACHE_CREATE_USERCOPY)
+        /*
+         * Newer grsec patchset uses kmem_cache_create_usercopy()
+         * instead of SLAB_USERCOPY flag
+         */
+        skc->skc_linux_cache = kmem_cache_create_usercopy(
+            skc->skc_name, size, align, slabflags, 0, size, NULL);
+#else
+        skc->skc_linux_cache = kmem_cache_create(
+            skc->skc_name, size, align, slabflags, NULL);
+#endif
                if (skc->skc_linux_cache == NULL) {
                        rc = ENOMEM;
                        goto out;