diff options
Diffstat (limited to 'patches/lib-rhashtable.patch')
-rw-r--r-- | patches/lib-rhashtable.patch | 27 |
1 files changed, 0 insertions, 27 deletions
diff --git a/patches/lib-rhashtable.patch b/patches/lib-rhashtable.patch index 59d870c0..d29169f4 100644 --- a/patches/lib-rhashtable.patch +++ b/patches/lib-rhashtable.patch @@ -1,33 +1,6 @@ --- a/compat/lib-rhashtable.c +++ b/compat/lib-rhashtable.c -@@ -86,11 +86,26 @@ static int alloc_bucket_locks(struct rha - size = min(size, 1U << tbl->nest); - - if (sizeof(spinlock_t) != 0) { -+#if LINUX_VERSION_IS_LESS(4,12,0) -+ tbl->locks = NULL; -+#ifdef CONFIG_NUMA -+ if (size * sizeof(spinlock_t) > PAGE_SIZE && -+ gfp == GFP_KERNEL) -+ tbl->locks = vmalloc(size * sizeof(spinlock_t)); -+#endif -+ if (gfp != GFP_KERNEL) -+ gfp |= __GFP_NOWARN | __GFP_NORETRY; -+ -+ if (!tbl->locks) -+ tbl->locks = kmalloc_array(size, sizeof(spinlock_t), -+ gfp); -+#else - if (gfpflags_allow_blocking(gfp)) - tbl->locks = kvmalloc(size * sizeof(spinlock_t), gfp); - else - tbl->locks = kmalloc_array(size, sizeof(spinlock_t), - gfp); -+#endif - if (!tbl->locks) - return -ENOMEM; - for (i = 0; i < size; i++) @@ -211,10 +226,11 @@ static struct bucket_table *bucket_table int i; |