Messages in this thread | | | Date | Fri, 10 Apr 2020 13:38:15 -0700 | From | "Paul E. McKenney" <> | Subject | Re: [PATCH 1/2] kcsan: Fix function matching in report |
| |
On Fri, Apr 10, 2020 at 06:44:17PM +0200, Marco Elver wrote: > Pass string length as returned by scnprintf() to strnstr(), since > strnstr() searches exactly len bytes in haystack, even if it contains a > NUL-terminator before haystack+len. > > Signed-off-by: Marco Elver <elver@google.com>
I queued both for testing and review, thank you, Marco!
Thanx, Paul
> --- > kernel/kcsan/report.c | 18 +++++++++--------- > 1 file changed, 9 insertions(+), 9 deletions(-) > > diff --git a/kernel/kcsan/report.c b/kernel/kcsan/report.c > index ddc18f1224a4..cf41d63dd0cd 100644 > --- a/kernel/kcsan/report.c > +++ b/kernel/kcsan/report.c > @@ -192,11 +192,11 @@ skip_report(enum kcsan_value_change value_change, unsigned long top_frame) > * maintainers. > */ > char buf[64]; > + int len = scnprintf(buf, sizeof(buf), "%ps", (void *)top_frame); > > - snprintf(buf, sizeof(buf), "%ps", (void *)top_frame); > - if (!strnstr(buf, "rcu_", sizeof(buf)) && > - !strnstr(buf, "_rcu", sizeof(buf)) && > - !strnstr(buf, "_srcu", sizeof(buf))) > + if (!strnstr(buf, "rcu_", len) && > + !strnstr(buf, "_rcu", len) && > + !strnstr(buf, "_srcu", len)) > return true; > } > > @@ -262,15 +262,15 @@ static const char *get_thread_desc(int task_id) > static int get_stack_skipnr(const unsigned long stack_entries[], int num_entries) > { > char buf[64]; > + int len; > int skip = 0; > > for (; skip < num_entries; ++skip) { > - snprintf(buf, sizeof(buf), "%ps", (void *)stack_entries[skip]); > - if (!strnstr(buf, "csan_", sizeof(buf)) && > - !strnstr(buf, "tsan_", sizeof(buf)) && > - !strnstr(buf, "_once_size", sizeof(buf))) { > + len = scnprintf(buf, sizeof(buf), "%ps", (void *)stack_entries[skip]); > + if (!strnstr(buf, "csan_", len) && > + !strnstr(buf, "tsan_", len) && > + !strnstr(buf, "_once_size", len)) > break; > - } > } > return skip; > } > -- > 2.26.0.110.g2183baf09c-goog >
| |