Message ID | 029aaa87ceadde0702f3312a34697c9139c9fb53.1646237226.git.andreyknvl@google.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | kasan: report clean-ups and improvements | expand |
On Wed, Mar 2, 2022 at 5:36 PM <andrey.konovalov@linux.dev> wrote: > From: Andrey Konovalov <andreyknvl@google.com> > > Software Tag-Based mode tags stack allocations when CONFIG_KASAN_STACK > is enabled. Print task name and id in reports for stack-related bugs. > > Signed-off-by: Andrey Konovalov <andreyknvl@google.com> > Reviewed-by: Alexander Potapenko <glider@google.com> > --- > mm/kasan/kasan.h | 2 +- > mm/kasan/report_sw_tags.c | 11 +++++++++++ > 2 files changed, 12 insertions(+), 1 deletion(-) > > diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h > index d1e111b7d5d8..4447df0d7343 100644 > --- a/mm/kasan/kasan.h > +++ b/mm/kasan/kasan.h > @@ -274,7 +274,7 @@ void *kasan_find_first_bad_addr(void *addr, size_t > size); > const char *kasan_get_bug_type(struct kasan_access_info *info); > void kasan_metadata_fetch_row(char *buffer, void *row); > > -#if defined(CONFIG_KASAN_GENERIC) && defined(CONFIG_KASAN_STACK) > +#if defined(CONFIG_KASAN_STACK) > void kasan_print_address_stack_frame(const void *addr); > #else > static inline void kasan_print_address_stack_frame(const void *addr) { } > diff --git a/mm/kasan/report_sw_tags.c b/mm/kasan/report_sw_tags.c > index d2298c357834..44577b8d47a7 100644 > --- a/mm/kasan/report_sw_tags.c > +++ b/mm/kasan/report_sw_tags.c > @@ -51,3 +51,14 @@ void kasan_print_tags(u8 addr_tag, const void *addr) > > pr_err("Pointer tag: [%02x], memory tag: [%02x]\n", addr_tag, > *shadow); > } > + > +#ifdef CONFIG_KASAN_STACK > +void kasan_print_address_stack_frame(const void *addr) > +{ > + if (WARN_ON(!object_is_on_stack(addr))) > + return; > + > + pr_err("The buggy address belongs to stack of task %s/%d\n", > + current->comm, task_pid_nr(current)); > This comm/pid pattern starts to appear often, maybe we could replace it with an inline function performing pr_cont()? > +} > +#endif > -- > 2.25.1 > > -- > You received this message because you are subscribed to the Google Groups > "kasan-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to kasan-dev+unsubscribe@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/kasan-dev/029aaa87ceadde0702f3312a34697c9139c9fb53.1646237226.git.andreyknvl%40google.com > . >
On Wed, Mar 2, 2022 at 6:34 PM Alexander Potapenko <glider@google.com> wrote: > >> diff --git a/mm/kasan/report_sw_tags.c b/mm/kasan/report_sw_tags.c >> index d2298c357834..44577b8d47a7 100644 >> --- a/mm/kasan/report_sw_tags.c >> +++ b/mm/kasan/report_sw_tags.c >> @@ -51,3 +51,14 @@ void kasan_print_tags(u8 addr_tag, const void *addr) >> >> pr_err("Pointer tag: [%02x], memory tag: [%02x]\n", addr_tag, *shadow); >> } >> + >> +#ifdef CONFIG_KASAN_STACK >> +void kasan_print_address_stack_frame(const void *addr) >> +{ >> + if (WARN_ON(!object_is_on_stack(addr))) >> + return; >> + >> + pr_err("The buggy address belongs to stack of task %s/%d\n", >> + current->comm, task_pid_nr(current)); > > This comm/pid pattern starts to appear often, maybe we could replace it with an inline function performing pr_cont()? Sounds good, will do if/when posting a v2. Thanks!
diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h index d1e111b7d5d8..4447df0d7343 100644 --- a/mm/kasan/kasan.h +++ b/mm/kasan/kasan.h @@ -274,7 +274,7 @@ void *kasan_find_first_bad_addr(void *addr, size_t size); const char *kasan_get_bug_type(struct kasan_access_info *info); void kasan_metadata_fetch_row(char *buffer, void *row); -#if defined(CONFIG_KASAN_GENERIC) && defined(CONFIG_KASAN_STACK) +#if defined(CONFIG_KASAN_STACK) void kasan_print_address_stack_frame(const void *addr); #else static inline void kasan_print_address_stack_frame(const void *addr) { } diff --git a/mm/kasan/report_sw_tags.c b/mm/kasan/report_sw_tags.c index d2298c357834..44577b8d47a7 100644 --- a/mm/kasan/report_sw_tags.c +++ b/mm/kasan/report_sw_tags.c @@ -51,3 +51,14 @@ void kasan_print_tags(u8 addr_tag, const void *addr) pr_err("Pointer tag: [%02x], memory tag: [%02x]\n", addr_tag, *shadow); } + +#ifdef CONFIG_KASAN_STACK +void kasan_print_address_stack_frame(const void *addr) +{ + if (WARN_ON(!object_is_on_stack(addr))) + return; + + pr_err("The buggy address belongs to stack of task %s/%d\n", + current->comm, task_pid_nr(current)); +} +#endif