On Wed, Jun 28, 2023 at 5:34 PM Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > > We don't need to traverse over the entire string and replace > occurrences of a character with '\0'. The first match will > suffice. Hence, replace strreplace() with strchrnul(). > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > --- > mm/kasan/report_generic.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/mm/kasan/report_generic.c b/mm/kasan/report_generic.c > index 51a1e8a8877f..63a34eac4a8c 100644 > --- a/mm/kasan/report_generic.c > +++ b/mm/kasan/report_generic.c > @@ -264,6 +264,7 @@ static void print_decoded_frame_descr(const char *frame_descr) > while (num_objects--) { > unsigned long offset; > unsigned long size; > + char *p; > > /* access offset */ > if (!tokenize_frame_descr(&frame_descr, token, sizeof(token), > @@ -282,7 +283,7 @@ static void print_decoded_frame_descr(const char *frame_descr) > return; > > /* Strip line number; without filename it's not very helpful. */ > - strreplace(token, ':', '\0'); > + p[strchrnul(token, ':') - token] = '\0'; Why not just *(strchrnul(token, ':')) = '\0'; ?