|
@@ -598,13 +598,13 @@ static void init_tracking(struct kmem_cache *s, void *object)
|
|
set_track(s, object, TRACK_ALLOC, 0UL);
|
|
set_track(s, object, TRACK_ALLOC, 0UL);
|
|
}
|
|
}
|
|
|
|
|
|
-static void print_track(const char *s, struct track *t)
|
|
|
|
|
|
+static void print_track(const char *s, struct track *t, unsigned long pr_time)
|
|
{
|
|
{
|
|
if (!t->addr)
|
|
if (!t->addr)
|
|
return;
|
|
return;
|
|
|
|
|
|
pr_err("INFO: %s in %pS age=%lu cpu=%u pid=%d\n",
|
|
pr_err("INFO: %s in %pS age=%lu cpu=%u pid=%d\n",
|
|
- s, (void *)t->addr, jiffies - t->when, t->cpu, t->pid);
|
|
|
|
|
|
+ s, (void *)t->addr, pr_time - t->when, t->cpu, t->pid);
|
|
#ifdef CONFIG_STACKTRACE
|
|
#ifdef CONFIG_STACKTRACE
|
|
{
|
|
{
|
|
int i;
|
|
int i;
|
|
@@ -619,11 +619,12 @@ static void print_track(const char *s, struct track *t)
|
|
|
|
|
|
static void print_tracking(struct kmem_cache *s, void *object)
|
|
static void print_tracking(struct kmem_cache *s, void *object)
|
|
{
|
|
{
|
|
|
|
+ unsigned long pr_time = jiffies;
|
|
if (!(s->flags & SLAB_STORE_USER))
|
|
if (!(s->flags & SLAB_STORE_USER))
|
|
return;
|
|
return;
|
|
|
|
|
|
- print_track("Allocated", get_track(s, object, TRACK_ALLOC));
|
|
|
|
- print_track("Freed", get_track(s, object, TRACK_FREE));
|
|
|
|
|
|
+ print_track("Allocated", get_track(s, object, TRACK_ALLOC), pr_time);
|
|
|
|
+ print_track("Freed", get_track(s, object, TRACK_FREE), pr_time);
|
|
}
|
|
}
|
|
|
|
|
|
static void print_page_info(struct page *page)
|
|
static void print_page_info(struct page *page)
|