Merge branch 'akpm' (patches from Andrew)
[linux-2.6-microblaze.git] / mm / kfence / report.c
index 4b891dd..f93a7b2 100644 (file)
@@ -9,6 +9,7 @@
 
 #include <linux/kernel.h>
 #include <linux/lockdep.h>
+#include <linux/math.h>
 #include <linux/printk.h>
 #include <linux/sched/debug.h>
 #include <linux/seq_file.h>
@@ -100,6 +101,13 @@ static void kfence_print_stack(struct seq_file *seq, const struct kfence_metadat
                               bool show_alloc)
 {
        const struct kfence_track *track = show_alloc ? &meta->alloc_track : &meta->free_track;
+       u64 ts_sec = track->ts_nsec;
+       unsigned long rem_nsec = do_div(ts_sec, NSEC_PER_SEC);
+
+       /* Timestamp matches printk timestamp format. */
+       seq_con_printf(seq, "%s by task %d on cpu %d at %lu.%06lus:\n",
+                      show_alloc ? "allocated" : "freed", track->pid,
+                      track->cpu, (unsigned long)ts_sec, rem_nsec / 1000);
 
        if (track->num_stack_entries) {
                /* Skip allocation/free internals stack. */
@@ -126,15 +134,14 @@ void kfence_print_object(struct seq_file *seq, const struct kfence_metadata *met
                return;
        }
 
-       seq_con_printf(seq,
-                      "kfence-#%td [0x%p-0x%p"
-                      ", size=%d, cache=%s] allocated by task %d:\n",
-                      meta - kfence_metadata, (void *)start, (void *)(start + size - 1), size,
-                      (cache && cache->name) ? cache->name : "<destroyed>", meta->alloc_track.pid);
+       seq_con_printf(seq, "kfence-#%td: 0x%p-0x%p, size=%d, cache=%s\n\n",
+                      meta - kfence_metadata, (void *)start, (void *)(start + size - 1),
+                      size, (cache && cache->name) ? cache->name : "<destroyed>");
+
        kfence_print_stack(seq, meta, true);
 
        if (meta->state == KFENCE_OBJECT_FREED) {
-               seq_con_printf(seq, "\nfreed by task %d:\n", meta->free_track.pid);
+               seq_con_printf(seq, "\n");
                kfence_print_stack(seq, meta, false);
        }
 }