mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 03:15:31 +09:00
UPSTREAM: kasan: common: provide can_alloc in kasan_save_stack()
Add another argument, can_alloc, to kasan_save_stack() which is passed
as-is to __stack_depot_save().
No functional change intended.
Link: https://lkml.kernel.org/r/20210913112609.2651084-5-elver@google.com
Signed-off-by: Marco Elver <elver@google.com>
Tested-by: Shuah Khan <skhan@linuxfoundation.org>
Acked-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Reviewed-by: Andrey Konovalov <andreyknvl@gmail.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: "Gustavo A. R. Silva" <gustavoars@kernel.org>
Cc: Lai Jiangshan <jiangshanlai@gmail.com>
Cc: Taras Madan <tarasmadan@google.com>
Cc: Tejun Heo <tj@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vijayanand Jitta <vjitta@codeaurora.org>
Cc: Vinayak Menon <vinmenon@codeaurora.org>
Cc: Walter Wu <walter-zh.wu@mediatek.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
(cherry picked from commit 7594b34774)
Bug: 217222520
Change-Id: Ic2fb3bbc49aabf3135a57aec635b4c024ccc043b
Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
This commit is contained in:
committed by
Andrey Konovalov
parent
52d92e09e9
commit
a5739cc487
@@ -30,20 +30,20 @@
|
||||
#include "kasan.h"
|
||||
#include "../slab.h"
|
||||
|
||||
depot_stack_handle_t kasan_save_stack(gfp_t flags)
|
||||
depot_stack_handle_t kasan_save_stack(gfp_t flags, bool can_alloc)
|
||||
{
|
||||
unsigned long entries[KASAN_STACK_DEPTH];
|
||||
unsigned int nr_entries;
|
||||
|
||||
nr_entries = stack_trace_save(entries, ARRAY_SIZE(entries), 0);
|
||||
nr_entries = filter_irq_stacks(entries, nr_entries);
|
||||
return stack_depot_save(entries, nr_entries, flags);
|
||||
return __stack_depot_save(entries, nr_entries, flags, can_alloc);
|
||||
}
|
||||
|
||||
void kasan_set_track(struct kasan_track *track, gfp_t flags)
|
||||
{
|
||||
track->pid = current->pid;
|
||||
track->stack = kasan_save_stack(flags);
|
||||
track->stack = kasan_save_stack(flags, true);
|
||||
}
|
||||
|
||||
#if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)
|
||||
|
||||
@@ -345,7 +345,7 @@ void kasan_record_aux_stack(void *addr)
|
||||
return;
|
||||
|
||||
alloc_meta->aux_stack[1] = alloc_meta->aux_stack[0];
|
||||
alloc_meta->aux_stack[0] = kasan_save_stack(GFP_NOWAIT);
|
||||
alloc_meta->aux_stack[0] = kasan_save_stack(GFP_NOWAIT, true);
|
||||
}
|
||||
|
||||
void kasan_set_free_info(struct kmem_cache *cache,
|
||||
|
||||
@@ -266,7 +266,7 @@ void kasan_report_invalid_free(void *object, unsigned long ip);
|
||||
|
||||
struct page *kasan_addr_to_page(const void *addr);
|
||||
|
||||
depot_stack_handle_t kasan_save_stack(gfp_t flags);
|
||||
depot_stack_handle_t kasan_save_stack(gfp_t flags, bool can_alloc);
|
||||
void kasan_set_track(struct kasan_track *track, gfp_t flags);
|
||||
void kasan_set_free_info(struct kmem_cache *cache, void *object, u8 tag);
|
||||
struct kasan_track *kasan_get_free_track(struct kmem_cache *cache,
|
||||
|
||||
Reference in New Issue
Block a user