| From ae44f8bd097ccc860c2869380700ccec2fa8f42e Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 27 Aug 2021 08:36:06 +0200 |
| Subject: s390: add kmemleak annotation in stack_alloc() |
| |
| From: Sven Schnelle <svens@linux.ibm.com> |
| |
| [ Upstream commit 436fc4feeabbf103d78d50a8e091b3aac28cc37f ] |
| |
| kmemleak with enabled auto scanning reports that our stack allocation is |
| lost. This is because we're saving the pointer + STACK_INIT_OFFSET to |
| lowcore. When kmemleak now scans the objects, it thinks that this one is |
| lost because it can't find a corresponding pointer. |
| |
| Reported-by: Marc Hartmayer <mhartmay@linux.ibm.com> |
| Signed-off-by: Sven Schnelle <svens@linux.ibm.com> |
| Tested-by: Marc Hartmayer <mhartmay@linux.ibm.com> |
| Signed-off-by: Heiko Carstens <hca@linux.ibm.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/s390/kernel/setup.c | 10 +++++++--- |
| 1 file changed, 7 insertions(+), 3 deletions(-) |
| |
| diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c |
| index ee23908f1b96..6f0d2d4dea74 100644 |
| --- a/arch/s390/kernel/setup.c |
| +++ b/arch/s390/kernel/setup.c |
| @@ -50,6 +50,7 @@ |
| #include <linux/compat.h> |
| #include <linux/start_kernel.h> |
| #include <linux/hugetlb.h> |
| +#include <linux/kmemleak.h> |
| |
| #include <asm/boot_data.h> |
| #include <asm/ipl.h> |
| @@ -312,9 +313,12 @@ void *restart_stack; |
| unsigned long stack_alloc(void) |
| { |
| #ifdef CONFIG_VMAP_STACK |
| - return (unsigned long)__vmalloc_node(THREAD_SIZE, THREAD_SIZE, |
| - THREADINFO_GFP, NUMA_NO_NODE, |
| - __builtin_return_address(0)); |
| + void *ret; |
| + |
| + ret = __vmalloc_node(THREAD_SIZE, THREAD_SIZE, THREADINFO_GFP, |
| + NUMA_NO_NODE, __builtin_return_address(0)); |
| + kmemleak_not_leak(ret); |
| + return (unsigned long)ret; |
| #else |
| return __get_free_pages(GFP_KERNEL, THREAD_SIZE_ORDER); |
| #endif |
| -- |
| 2.33.0 |
| |