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:41:47 -0700 From: tip-bot for Thomas Gleixner <tipbot@...or.com> To: linux-tip-commits@...r.kernel.org Cc: rodrigo.vivi@...el.com, dsterba@...e.com, tom.zanussi@...ux.intel.com, akinobu.mita@...il.com, maarten.lankhorst@...ux.intel.com, adobriyan@...il.com, jthumshirn@...e.de, daniel@...ll.ch, mbenes@...e.cz, hpa@...or.com, glider@...gle.com, rppt@...ux.vnet.ibm.com, snitzer@...hat.com, akpm@...ux-foundation.org, hch@....de, jpoimboe@...hat.com, joonas.lahtinen@...ux.intel.com, robin.murphy@....com, catalin.marinas@....com, rientjes@...gle.com, airlied@...ux.ie, linux-kernel@...r.kernel.org, mingo@...nel.org, penberg@...nel.org, clm@...com, tglx@...utronix.de, agk@...hat.com, josef@...icpanda.com, luto@...nel.org, m.szyprowski@...sung.com, cl@...ux.com, dvyukov@...gle.com, rostedt@...dmis.org, jani.nikula@...ux.intel.com, aryabinin@...tuozzo.com Subject: [tip:core/stacktrace] drm: Simplify stacktrace handling Commit-ID: 487f3c7fb1a07ceff78bb18688eb8538a4775227 Gitweb: https://git.kernel.org/tip/487f3c7fb1a07ceff78bb18688eb8538a4775227 Author: Thomas Gleixner <tglx@...utronix.de> AuthorDate: Thu, 25 Apr 2019 11:45:09 +0200 Committer: Thomas Gleixner <tglx@...utronix.de> CommitDate: Mon, 29 Apr 2019 12:37:53 +0200 drm: Simplify stacktrace handling Replace the indirection through struct stack_trace by using the storage array based interfaces. The original code in all printing functions is really wrong. It allocates a storage array on stack which is unused because depot_fetch_stack() does not store anything in it. It overwrites the entries pointer in the stack_trace struct so it points to the depot storage. Signed-off-by: Thomas Gleixner <tglx@...utronix.de> Reviewed-by: Josh Poimboeuf <jpoimboe@...hat.com> Acked-by: Daniel Vetter <daniel@...ll.ch> Cc: Andy Lutomirski <luto@...nel.org> 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: Steven Rostedt <rostedt@...dmis.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: 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/20190425094802.622094226@linutronix.de --- drivers/gpu/drm/drm_mm.c | 22 +++++++--------------- drivers/gpu/drm/i915/i915_vma.c | 11 ++++------- drivers/gpu/drm/i915/intel_runtime_pm.c | 21 +++++++-------------- 3 files changed, 18 insertions(+), 36 deletions(-) diff --git a/drivers/gpu/drm/drm_mm.c b/drivers/gpu/drm/drm_mm.c index 69552777e13a..8b4cd31ce7bd 100644 --- a/drivers/gpu/drm/drm_mm.c +++ b/drivers/gpu/drm/drm_mm.c @@ -106,22 +106,19 @@ static noinline void save_stack(struct drm_mm_node *node) { unsigned long entries[STACKDEPTH]; - struct stack_trace trace = { - .entries = entries, - .max_entries = STACKDEPTH, - .skip = 1 - }; + unsigned int n; - save_stack_trace(&trace); + n = stack_trace_save(entries, ARRAY_SIZE(entries), 1); /* May be called under spinlock, so avoid sleeping */ - node->stack = depot_save_stack(&trace, GFP_NOWAIT); + node->stack = stack_depot_save(entries, n, GFP_NOWAIT); } static void show_leaks(struct drm_mm *mm) { struct drm_mm_node *node; - unsigned long entries[STACKDEPTH]; + unsigned long *entries; + unsigned int nr_entries; char *buf; buf = kmalloc(BUFSZ, GFP_KERNEL); @@ -129,19 +126,14 @@ static void show_leaks(struct drm_mm *mm) return; list_for_each_entry(node, drm_mm_nodes(mm), node_list) { - struct stack_trace trace = { - .entries = entries, - .max_entries = STACKDEPTH - }; - if (!node->stack) { DRM_ERROR("node [%08llx + %08llx]: unknown owner\n", node->start, node->size); continue; } - depot_fetch_stack(node->stack, &trace); - snprint_stack_trace(buf, BUFSZ, &trace, 0); + nr_entries = stack_depot_fetch(node->stack, &entries); + stack_trace_snprint(buf, BUFSZ, entries, nr_entries, 0); DRM_ERROR("node [%08llx + %08llx]: inserted at\n%s", node->start, node->size, buf); } diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c index b713bed20c38..41b5bcb803cb 100644 --- a/drivers/gpu/drm/i915/i915_vma.c +++ b/drivers/gpu/drm/i915/i915_vma.c @@ -36,11 +36,8 @@ static void vma_print_allocator(struct i915_vma *vma, const char *reason) { - unsigned long entries[12]; - struct stack_trace trace = { - .entries = entries, - .max_entries = ARRAY_SIZE(entries), - }; + unsigned long *entries; + unsigned int nr_entries; char buf[512]; if (!vma->node.stack) { @@ -49,8 +46,8 @@ static void vma_print_allocator(struct i915_vma *vma, const char *reason) return; } - depot_fetch_stack(vma->node.stack, &trace); - snprint_stack_trace(buf, sizeof(buf), &trace, 0); + nr_entries = stack_depot_fetch(vma->node.stack, &entries); + stack_trace_snprint(buf, sizeof(buf), entries, nr_entries, 0); DRM_DEBUG_DRIVER("vma.node [%08llx + %08llx] %s: inserted at %s\n", vma->node.start, vma->node.size, reason, buf); } diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915/intel_runtime_pm.c index 1f8acbb332c9..20c4434474e3 100644 --- a/drivers/gpu/drm/i915/intel_runtime_pm.c +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c @@ -60,27 +60,20 @@ static noinline depot_stack_handle_t __save_depot_stack(void) { unsigned long entries[STACKDEPTH]; - struct stack_trace trace = { - .entries = entries, - .max_entries = ARRAY_SIZE(entries), - .skip = 1, - }; + unsigned int n; - save_stack_trace(&trace); - return depot_save_stack(&trace, GFP_NOWAIT | __GFP_NOWARN); + n = stack_trace_save(entries, ARRAY_SIZE(entries), 1); + return stack_depot_save(entries, n, GFP_NOWAIT | __GFP_NOWARN); } static void __print_depot_stack(depot_stack_handle_t stack, char *buf, int sz, int indent) { - unsigned long entries[STACKDEPTH]; - struct stack_trace trace = { - .entries = entries, - .max_entries = ARRAY_SIZE(entries), - }; + unsigned long *entries; + unsigned int nr_entries; - depot_fetch_stack(stack, &trace); - snprint_stack_trace(buf, sz, &trace, indent); + nr_entries = stack_depot_fetch(stack, &entries); + stack_trace_snprint(buf, sz, entries, nr_entries, indent); } static void init_intel_runtime_pm_wakeref(struct drm_i915_private *i915)
Powered by blists - more mailing lists