On Wed, 22 Nov 2023 at 21:01, Juntong Deng <juntong.deng@xxxxxxxxxxx> wrote: > > The time obtained by local_clock() is the local CPU time, which may > drift between CPUs and is not suitable for comparison across CPUs. > > It is possible for allocation and free to occur on different CPUs, > and using local_clock() to record timestamps may cause confusion. The same problem exists with printk logging. > ktime_get_boot_fast_ns() is based on clock sources and can be used > reliably and accurately for comparison across CPUs. You may be right here, however, the choice of local_clock() was deliberate: it's the same timestamp source that printk uses. Also, on systems where there is drift, the arch selects CONFIG_HAVE_UNSTABLE_SCHED_CLOCK (like on x86) and the drift is generally bounded. > Signed-off-by: Juntong Deng <juntong.deng@xxxxxxxxxxx> > --- > mm/kfence/core.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/kfence/core.c b/mm/kfence/core.c > index 3872528d0963..041c03394193 100644 > --- a/mm/kfence/core.c > +++ b/mm/kfence/core.c > @@ -295,7 +295,7 @@ metadata_update_state(struct kfence_metadata *meta, enum kfence_object_state nex > track->num_stack_entries = num_stack_entries; > track->pid = task_pid_nr(current); > track->cpu = raw_smp_processor_id(); > - track->ts_nsec = local_clock(); /* Same source as printk timestamps. */ > + track->ts_nsec = ktime_get_boot_fast_ns(); You have ignored the comment placed here - now it's no longer the same source as printk timestamps. I think not being able to correlate information from KFENCE reports with timestamps in lines from printk is worse. For now, I have to Nack: Unless you can prove that ktime_get_boot_fast_ns() can still be correlated with timestamps from printk timestamps, I think this change only trades one problem for another. Thanks, -- Marco