mirror of https://gitee.com/openkylin/linux.git
mm/kmemleak: Simplify stacktrace handling
Replace the indirection through struct stack_trace by using the storage array based interfaces. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Josh Poimboeuf <jpoimboe@redhat.com> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Cc: Andy Lutomirski <luto@kernel.org> Cc: linux-mm@kvack.org Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Alexander Potapenko <glider@google.com> Cc: Alexey Dobriyan <adobriyan@gmail.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Christoph Lameter <cl@linux.com> Cc: Pekka Enberg <penberg@kernel.org> Cc: David Rientjes <rientjes@google.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc: Andrey Ryabinin <aryabinin@virtuozzo.com> Cc: kasan-dev@googlegroups.com Cc: Mike Rapoport <rppt@linux.vnet.ibm.com> Cc: Akinobu Mita <akinobu.mita@gmail.com> Cc: Christoph Hellwig <hch@lst.de> Cc: iommu@lists.linux-foundation.org Cc: Robin Murphy <robin.murphy@arm.com> Cc: Marek Szyprowski <m.szyprowski@samsung.com> Cc: Johannes Thumshirn <jthumshirn@suse.de> Cc: David Sterba <dsterba@suse.com> Cc: Chris Mason <clm@fb.com> Cc: Josef Bacik <josef@toxicpanda.com> Cc: linux-btrfs@vger.kernel.org Cc: dm-devel@redhat.com Cc: Mike Snitzer <snitzer@redhat.com> Cc: Alasdair Kergon <agk@redhat.com> Cc: Daniel Vetter <daniel@ffwll.ch> Cc: intel-gfx@lists.freedesktop.org Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: dri-devel@lists.freedesktop.org Cc: David Airlie <airlied@linux.ie> Cc: Jani Nikula <jani.nikula@linux.intel.com> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Cc: Tom Zanussi <tom.zanussi@linux.intel.com> Cc: Miroslav Benes <mbenes@suse.cz> Cc: linux-arch@vger.kernel.org Link: https://lkml.kernel.org/r/20190425094801.863716911@linutronix.de
This commit is contained in:
parent
7971679994
commit
07984aad1c
|
@ -410,11 +410,6 @@ static void print_unreferenced(struct seq_file *seq,
|
|||
*/
|
||||
static void dump_object_info(struct kmemleak_object *object)
|
||||
{
|
||||
struct stack_trace trace;
|
||||
|
||||
trace.nr_entries = object->trace_len;
|
||||
trace.entries = object->trace;
|
||||
|
||||
pr_notice("Object 0x%08lx (size %zu):\n",
|
||||
object->pointer, object->size);
|
||||
pr_notice(" comm \"%s\", pid %d, jiffies %lu\n",
|
||||
|
@ -424,7 +419,7 @@ static void dump_object_info(struct kmemleak_object *object)
|
|||
pr_notice(" flags = 0x%x\n", object->flags);
|
||||
pr_notice(" checksum = %u\n", object->checksum);
|
||||
pr_notice(" backtrace:\n");
|
||||
print_stack_trace(&trace, 4);
|
||||
stack_trace_print(object->trace, object->trace_len, 4);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -553,15 +548,7 @@ static struct kmemleak_object *find_and_remove_object(unsigned long ptr, int ali
|
|||
*/
|
||||
static int __save_stack_trace(unsigned long *trace)
|
||||
{
|
||||
struct stack_trace stack_trace;
|
||||
|
||||
stack_trace.max_entries = MAX_TRACE;
|
||||
stack_trace.nr_entries = 0;
|
||||
stack_trace.entries = trace;
|
||||
stack_trace.skip = 2;
|
||||
save_stack_trace(&stack_trace);
|
||||
|
||||
return stack_trace.nr_entries;
|
||||
return stack_trace_save(trace, MAX_TRACE, 2);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -2019,13 +2006,8 @@ early_param("kmemleak", kmemleak_boot_config);
|
|||
|
||||
static void __init print_log_trace(struct early_log *log)
|
||||
{
|
||||
struct stack_trace trace;
|
||||
|
||||
trace.nr_entries = log->trace_len;
|
||||
trace.entries = log->trace;
|
||||
|
||||
pr_notice("Early log backtrace:\n");
|
||||
print_stack_trace(&trace, 2);
|
||||
stack_trace_print(log->trace, log->trace_len, 2);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue