On Thu, Feb 15, 2024 at 7:41 PM Juntong Deng <juntong.deng@xxxxxxxxxxx> wrote: > > Fix the mistake before, I thought printk only display 99999 seconds > at max, but actually printk can display larger number of seconds. > > So increase the number of bits to shift when recording the extra > timestamp (44 bits), without affecting the precision, shift it right by > 9 bits, discarding all bits that do not affect the microsecond part > (nanoseconds will not be shown). > > Currently the maximum time that can be displayed is 9007199.254740s, > because > > 11111111111111111111111111111111111111111111 (44 bits) << 9 > = 11111111111111111111111111111111111111111111000000000 > = 9007199.254740 > > Signed-off-by: Juntong Deng <juntong.deng@xxxxxxxxxxx> > --- > mm/kasan/common.c | 2 +- > mm/kasan/report.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/mm/kasan/common.c b/mm/kasan/common.c > index 6ca63e8dda74..e7c9a4dc89f8 100644 > --- a/mm/kasan/common.c > +++ b/mm/kasan/common.c > @@ -55,7 +55,7 @@ void kasan_set_track(struct kasan_track *track, depot_stack_handle_t stack) > u64 ts_nsec = local_clock(); > > track->cpu = cpu; > - track->timestamp = ts_nsec >> 3; > + track->timestamp = ts_nsec >> 9; > #endif /* CONFIG_KASAN_EXTRA_INFO */ > track->pid = current->pid; > track->stack = stack; > diff --git a/mm/kasan/report.c b/mm/kasan/report.c > index 7afa4feb03e1..b48c768acc84 100644 > --- a/mm/kasan/report.c > +++ b/mm/kasan/report.c > @@ -267,7 +267,7 @@ static void print_track(struct kasan_track *track, const char *prefix) > u64 ts_nsec = track->timestamp; > unsigned long rem_usec; > > - ts_nsec <<= 3; > + ts_nsec <<= 9; > rem_usec = do_div(ts_nsec, NSEC_PER_SEC) / 1000; > > pr_err("%s by task %u on cpu %d at %lu.%06lus:\n", > -- > 2.39.2 > Acked-by: Andrey Konovalov <andreyknvl@xxxxxxxxx>