summaryrefslogtreecommitdiff
path: root/kernel/scs.c
diff options
context:
space:
mode:
authorNick Terrell <terrelln@fb.com>2022-10-21 16:00:35 -0700
committerNick Terrell <terrelln@fb.com>2022-10-21 16:00:35 -0700
commit14e77332e74603efab8347c89d3cda447c3b97c9 (patch)
treeb7b8a48f4f75590266a763c52e072dda32b228ae /kernel/scs.c
parent88a309465b3f05a100c3b81966982c0f9f5d23a6 (diff)
parent1d61754caa8c69f566504e63c8b3f3a2df0954c8 (diff)
Merge branch 'main' into zstd-next
Diffstat (limited to 'kernel/scs.c')
-rw-r--r--kernel/scs.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/kernel/scs.c b/kernel/scs.c
index 579841be8864..b7e1b096d906 100644
--- a/kernel/scs.c
+++ b/kernel/scs.c
@@ -32,15 +32,19 @@ static void *__scs_alloc(int node)
for (i = 0; i < NR_CACHED_SCS; i++) {
s = this_cpu_xchg(scs_cache[i], NULL);
if (s) {
- kasan_unpoison_vmalloc(s, SCS_SIZE);
+ s = kasan_unpoison_vmalloc(s, SCS_SIZE,
+ KASAN_VMALLOC_PROT_NORMAL);
memset(s, 0, SCS_SIZE);
- return s;
+ goto out;
}
}
- return __vmalloc_node_range(SCS_SIZE, 1, VMALLOC_START, VMALLOC_END,
+ s = __vmalloc_node_range(SCS_SIZE, 1, VMALLOC_START, VMALLOC_END,
GFP_SCS, PAGE_KERNEL, 0, node,
__builtin_return_address(0));
+
+out:
+ return kasan_reset_tag(s);
}
void *scs_alloc(int node)
@@ -78,7 +82,7 @@ void scs_free(void *s)
if (this_cpu_cmpxchg(scs_cache[i], 0, s) == NULL)
return;
- kasan_unpoison_vmalloc(s, SCS_SIZE);
+ kasan_unpoison_vmalloc(s, SCS_SIZE, KASAN_VMALLOC_PROT_NORMAL);
vfree_atomic(s);
}