lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 29 Apr 2019 11:46:24 -0700 From: tip-bot for Thomas Gleixner <tipbot@...or.com> To: linux-tip-commits@...r.kernel.org Cc: mingo@...nel.org, adobriyan@...il.com, hpa@...or.com, akpm@...ux-foundation.org, dvyukov@...gle.com, jani.nikula@...ux.intel.com, tglx@...utronix.de, snitzer@...hat.com, m.szyprowski@...sung.com, airlied@...ux.ie, penberg@...nel.org, luto@...nel.org, aryabinin@...tuozzo.com, rientjes@...gle.com, joonas.lahtinen@...ux.intel.com, robin.murphy@....com, jpoimboe@...hat.com, maarten.lankhorst@...ux.intel.com, rppt@...ux.vnet.ibm.com, hch@....de, dsterba@...e.com, cl@...ux.com, josef@...icpanda.com, jthumshirn@...e.de, catalin.marinas@....com, daniel@...ll.ch, tom.zanussi@...ux.intel.com, akinobu.mita@...il.com, linux-kernel@...r.kernel.org, mbenes@...e.cz, clm@...com, agk@...hat.com, rodrigo.vivi@...el.com, glider@...gle.com, rostedt@...dmis.org Subject: [tip:core/stacktrace] tracing: Simplify stack trace retrieval Commit-ID: ee6dd0db4d8de41a0a0bc37d8d87a0b1623f83b0 Gitweb: https://git.kernel.org/tip/ee6dd0db4d8de41a0a0bc37d8d87a0b1623f83b0 Author: Thomas Gleixner <tglx@...utronix.de> AuthorDate: Thu, 25 Apr 2019 11:45:16 +0200 Committer: Thomas Gleixner <tglx@...utronix.de> CommitDate: Mon, 29 Apr 2019 12:37:55 +0200 tracing: Simplify stack trace retrieval Replace the indirection through struct stack_trace by using the storage array based interfaces. Signed-off-by: Thomas Gleixner <tglx@...utronix.de> Reviewed-by: Steven Rostedt (VMware) <rostedt@...dmis.org> Reviewed-by: Josh Poimboeuf <jpoimboe@...hat.com> Cc: Andy Lutomirski <luto@...nel.org> Cc: Alexander Potapenko <glider@...gle.com> Cc: Alexey Dobriyan <adobriyan@...il.com> Cc: Andrew Morton <akpm@...ux-foundation.org> Cc: Christoph Lameter <cl@...ux.com> Cc: Pekka Enberg <penberg@...nel.org> Cc: linux-mm@...ck.org Cc: David Rientjes <rientjes@...gle.com> Cc: Catalin Marinas <catalin.marinas@....com> Cc: Dmitry Vyukov <dvyukov@...gle.com> Cc: Andrey Ryabinin <aryabinin@...tuozzo.com> Cc: kasan-dev@...glegroups.com Cc: Mike Rapoport <rppt@...ux.vnet.ibm.com> Cc: Akinobu Mita <akinobu.mita@...il.com> Cc: Christoph Hellwig <hch@....de> Cc: iommu@...ts.linux-foundation.org Cc: Robin Murphy <robin.murphy@....com> Cc: Marek Szyprowski <m.szyprowski@...sung.com> Cc: Johannes Thumshirn <jthumshirn@...e.de> Cc: David Sterba <dsterba@...e.com> Cc: Chris Mason <clm@...com> Cc: Josef Bacik <josef@...icpanda.com> Cc: linux-btrfs@...r.kernel.org Cc: dm-devel@...hat.com Cc: Mike Snitzer <snitzer@...hat.com> Cc: Alasdair Kergon <agk@...hat.com> Cc: Daniel Vetter <daniel@...ll.ch> Cc: intel-gfx@...ts.freedesktop.org Cc: Joonas Lahtinen <joonas.lahtinen@...ux.intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@...ux.intel.com> Cc: dri-devel@...ts.freedesktop.org Cc: David Airlie <airlied@...ux.ie> Cc: Jani Nikula <jani.nikula@...ux.intel.com> Cc: Rodrigo Vivi <rodrigo.vivi@...el.com> Cc: Tom Zanussi <tom.zanussi@...ux.intel.com> Cc: Miroslav Benes <mbenes@...e.cz> Cc: linux-arch@...r.kernel.org Link: https://lkml.kernel.org/r/20190425094803.248604594@linutronix.de --- kernel/trace/trace.c | 40 +++++++++++++--------------------------- 1 file changed, 13 insertions(+), 27 deletions(-) diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index d8369d27c1af..0ce8515dd470 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -2774,22 +2774,18 @@ static void __ftrace_trace_stack(struct ring_buffer *buffer, { struct trace_event_call *call = &event_kernel_stack; struct ring_buffer_event *event; + unsigned int size, nr_entries; struct ftrace_stack *fstack; struct stack_entry *entry; - struct stack_trace trace; - int size = FTRACE_KSTACK_ENTRIES; int stackidx; - trace.nr_entries = 0; - trace.skip = skip; - /* * Add one, for this function and the call to save_stack_trace() * If regs is set, then these functions will not be in the way. */ #ifndef CONFIG_UNWINDER_ORC if (!regs) - trace.skip++; + skip++; #endif /* @@ -2816,28 +2812,24 @@ static void __ftrace_trace_stack(struct ring_buffer *buffer, barrier(); fstack = this_cpu_ptr(ftrace_stacks.stacks) + stackidx; - trace.entries = fstack->calls; - trace.max_entries = FTRACE_KSTACK_ENTRIES; - - if (regs) - save_stack_trace_regs(regs, &trace); - else - save_stack_trace(&trace); - - if (trace.nr_entries > size) - size = trace.nr_entries; + size = ARRAY_SIZE(fstack->calls); - size *= sizeof(unsigned long); + if (regs) { + nr_entries = stack_trace_save_regs(regs, fstack->calls, + size, skip); + } else { + nr_entries = stack_trace_save(fstack->calls, size, skip); + } + size = nr_entries * sizeof(unsigned long); event = __trace_buffer_lock_reserve(buffer, TRACE_STACK, sizeof(*entry) + size, flags, pc); if (!event) goto out; entry = ring_buffer_event_data(event); - memcpy(&entry->caller, trace.entries, size); - - entry->size = trace.nr_entries; + memcpy(&entry->caller, fstack->calls, size); + entry->size = nr_entries; if (!call_filter_check_discard(call, entry, buffer, event)) __buffer_unlock_commit(buffer, event); @@ -2916,7 +2908,6 @@ ftrace_trace_userstack(struct ring_buffer *buffer, unsigned long flags, int pc) struct trace_event_call *call = &event_user_stack; struct ring_buffer_event *event; struct userstack_entry *entry; - struct stack_trace trace; if (!(global_trace.trace_flags & TRACE_ITER_USERSTACKTRACE)) return; @@ -2947,12 +2938,7 @@ ftrace_trace_userstack(struct ring_buffer *buffer, unsigned long flags, int pc) entry->tgid = current->tgid; memset(&entry->caller, 0, sizeof(entry->caller)); - trace.nr_entries = 0; - trace.max_entries = FTRACE_STACK_ENTRIES; - trace.skip = 0; - trace.entries = entry->caller; - - save_stack_trace_user(&trace); + stack_trace_save_user(entry->caller, FTRACE_STACK_ENTRIES); if (!call_filter_check_discard(call, entry, buffer, event)) __buffer_unlock_commit(buffer, event);
Powered by blists - more mailing lists