Merge branch 'parisc-5.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller...
[linux-2.6-block.git] / mm / slub.c
index d30ede89f4a6499a07e69baf981b755d0a1b4400..6b28cd2b5a58c9f09f81beae1972d9a229ec65e2 100644 (file)
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -552,31 +552,22 @@ static void set_track(struct kmem_cache *s, void *object,
 
        if (addr) {
 #ifdef CONFIG_STACKTRACE
-               struct stack_trace trace;
-               int i;
+               unsigned int nr_entries;
 
-               trace.nr_entries = 0;
-               trace.max_entries = TRACK_ADDRS_COUNT;
-               trace.entries = p->addrs;
-               trace.skip = 3;
                metadata_access_enable();
-               save_stack_trace(&trace);
+               nr_entries = stack_trace_save(p->addrs, TRACK_ADDRS_COUNT, 3);
                metadata_access_disable();
 
-               /* See rant in lockdep.c */
-               if (trace.nr_entries != 0 &&
-                   trace.entries[trace.nr_entries - 1] == ULONG_MAX)
-                       trace.nr_entries--;
-
-               for (i = trace.nr_entries; i < TRACK_ADDRS_COUNT; i++)
-                       p->addrs[i] = 0;
+               if (nr_entries < TRACK_ADDRS_COUNT)
+                       p->addrs[nr_entries] = 0;
 #endif
                p->addr = addr;
                p->cpu = smp_processor_id();
                p->pid = current->pid;
                p->when = jiffies;
-       } else
+       } else {
                memset(p, 0, sizeof(struct track));
+       }
 }
 
 static void init_tracking(struct kmem_cache *s, void *object)