From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752100AbdJXLs6 (ORCPT ); Tue, 24 Oct 2017 07:48:58 -0400 Received: from mailout3.samsung.com ([203.254.224.33]:40881 "EHLO mailout3.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751825AbdJXLs4 (ORCPT ); Tue, 24 Oct 2017 07:48:56 -0400 DKIM-Filter: OpenDKIM Filter v2.11.0 mailout3.samsung.com 20171024114854epoutp031465406c85f9b95a409213733158b5e8~wfzN-97Pp2234222342epoutp03V X-AuditID: b6c32a4b-f03ff70000001126-dd-59ef28a552ad From: Maninder Singh To: linux@armlinux.org.uk, mingo@kernel.org, will.deacon@arm.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, pankaj.m@samsung.com, a.sahrawat@samsung.com, Maninder Singh , Vaneet Narang Subject: [PATCH 1/1] arm/stacktrace: stop unwinding after an invalid address. Date: Tue, 24 Oct 2017 17:16:42 +0530 Message-Id: <1508845602-33508-1-git-send-email-maninder1.s@samsung.com> X-Mailer: git-send-email 1.9.1 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrGKsWRmVeSWpSXmKPExsWy7bCmuu5SjfeRBucnWltc3J1qsenxNVaL y7vmsFkcmrqX0eLw/DYWi9X/TjFa3Huzlcni0Mm5jBYvP55gceD0WDNvDaPH5WsXmT02repk 89i8pN6jb8sqRo/Pm+QC2KJSbTJSE1NSixRS85LzUzLz0m2VvIPjneNNzQwMdQ0tLcyVFPIS c1NtlVx8AnTdMnOAblJSKEvMKQUKBSQWFyvp29kU5ZeWpCpk5BeX2CpFGxoa6RkamOsZGRnp mZjGWhmZApUkpGa0THnOXPCBt+LzpCusDYynuLsYOTgkBEwkjsyw6mLk5BAS2M0o8XUXM4T9 iVHi6B7PLkYuIPsbo0Tb/4tgCZD6Gc2d7BCJvYwS109/g3K+MEo8X3CPFaSKTUBPYtWuPSwg toiAg8SVw1OZQYqYBU4wSpzsfQqWEBbwl+jet5AdxGYRUJX4dH8j2ApeAXeJSY82MEKsk5M4 eWwyK0izhMAMNonW7XOYIBIuEv///2aFsIUlXh3fwg5hS0l8freXDaKhm1Fi2eknTFDdjBIr 7t2D+sJe4sGNo+ygEGAW0JRYv0sfImwr0fLsNBuIzSzAJ9H7G6QXFEi8Eh1tQhAlqhItNzdA 7fWQOHlqGtQ9jhLNB98zg5QLCcRKLPvoOIFRdhbC/AWMjKsYJVMLinPTU4tNC4zzUsv1ihNz i0vz0vWS83M3MYLTmJb3DsZN53wOMQpwMCrx8DaYv4sUYk0sK67MPcQowcGsJMJ7RPh9pBBv SmJlVWpRfnxRaU5q8SFGU2AATmSWEk3OB6bYvJJ4QxNLAxMzM3NDAwNLEyVx3mM7SyOFBNIT S1KzU1MLUotg+pg4OKUaGLW9vDZwcyr9mDPXPej0y+7WdYke+h5pq+dauT6QKfrv2DtjcZTG fp/b0s9KJEXSjI4YN8VFNn885Payt0tn+oH95/4d1O4uKf12Wi/hU+ByRy+5bRueRx9VudU7 tz97nlnx/7CZCvWL3da+zr15pnhmt+M6QaNZbxxkJVOfsa+dlJy7c0bAMSWW4oxEQy3mouJE ABvYz/d5AwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprFLMWRmVeSWpSXmKPExsWy7bCSvO4SjfeRBrP7tCwu7k612PT4GqvF 5V1z2CwOTd3LaHF4fhuLxep/pxgt7r3ZymRx6ORcRouXH0+wOHB6rJm3htHj8rWLzB6bVnWy eWxeUu/Rt2UVo8fnTXIBbFFcNimpOZllqUX6dglcGS1TnjMXfOCt+DzpCmsD4ynuLkZODgkB E4kZzZ3sXYxcHEICuxkl2k/vYIJISEv8/PeeBcIWllj57zlU0SdGiSXvjzGDJNgE9CRW7doD ViQi4CLRO/02M0gRs8A5Rol9d+aBJYQFfCWWbnkG1sAioCrx6f5GMJtXwF1i0qMNjBAb5CRO HpvMOoGRZwEjwypGydSC4tz03GLDAqO81HK94sTc4tK8dL3k/NxNjOAQ09LawXjiRPwhRgEO RiUe3huW7yKFWBPLiitzDzFKcDArifAeEX4fKcSbklhZlVqUH19UmpNafIhRmoNFSZxXPv9Y pJBAemJJanZqakFqEUyWiYNTqoExf/pMo14Rz864B7v0jBsunl8Z/VVJeGLBsbDHJV1br117 81z2rsimt/yxSXlFVyN/9dVGdb1adPx+GucD9hc7goxSZk1ZW5DAv72XU0Dl3aI+XrYM07X6 z5+/b2+d97DD7JVxrE4c11o3ydTMZI5p5ypPLXHeWvO8usvovirjRK4jsd5HGKOUWIozEg21 mIuKEwElW7X7LQIAAA== X-CMS-MailID: 20171024114852epcas5p199ffd8d75fc57e46d46025e12180c156 X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-MTR: 20171024114852epcas5p199ffd8d75fc57e46d46025e12180c156 CMS-TYPE: 105P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20171024114852epcas5p199ffd8d75fc57e46d46025e12180c156 X-RootMTR: 20171024114852epcas5p199ffd8d75fc57e46d46025e12180c156 References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch stops unwinding backtrace in case of below 2 cases. (Issue observed while porting stackdepot on ARM, duplicate entries created in stackdepot reference patch for workaround in stackdepot:- https://lkml.org/lkml/2017/10/11/353 ). 1. If address belongs to irq/exception code, ignore it. save_stack+0x40/0xec __set_page_owner+0x2c/0x64 .... .... __handle_domain_irq+0x9c/0x130 gic_handle_irq+0x40/0x80 __irq_usr+0x4c/0x60 0xb6507818 ^^^^^^^ 2. If address belongs to junk entry, ignore it kmem_cache_alloc_trace+0x1e8/0x21c rb_allocate_cpu_buffer+0xf0/0x25c __ring_buffer_alloc+0xf8/0x1e0 trace_init+0xe0/0x2cc start_kernel+0x30c/0x448 0x400080a0 ^^^^^^^ Signed-off-by: Maninder Singh Signed-off-by: Vaneet Narang --- arch/arm/kernel/stacktrace.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/arch/arm/kernel/stacktrace.c b/arch/arm/kernel/stacktrace.c index 3a2fa20..80e953e 100644 --- a/arch/arm/kernel/stacktrace.c +++ b/arch/arm/kernel/stacktrace.c @@ -82,6 +82,9 @@ static int save_trace(struct stackframe *frame, void *d) return 0; } + if (!__kernel_text_address(addr)) + return 1; + trace->entries[trace->nr_entries++] = addr; if (trace->nr_entries >= trace->max_entries) @@ -98,12 +101,8 @@ static int save_trace(struct stackframe *frame, void *d) data->last_pc = frame->pc; if (!in_exception_text(addr)) return 0; - - regs = (struct pt_regs *)frame->sp; - - trace->entries[trace->nr_entries++] = regs->ARM_pc; - - return trace->nr_entries >= trace->max_entries; + else + return 1; } /* This must be noinline to so that our skip calculation works correctly */ -- 1.9.1