From patchwork Mon Feb 8 18:39:42 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yang Shi X-Patchwork-Id: 61440 Delivered-To: patch@linaro.org Received: by 10.112.43.199 with SMTP id y7csp1612324lbl; Mon, 8 Feb 2016 11:02:21 -0800 (PST) X-Received: by 10.98.14.146 with SMTP id 18mr27098892pfo.35.1454958141639; Mon, 08 Feb 2016 11:02:21 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id or6si1761732pab.5.2016.02.08.11.02.21; Mon, 08 Feb 2016 11:02:21 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dkim=pass header.i=@linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755229AbcBHTCT (ORCPT + 30 others); Mon, 8 Feb 2016 14:02:19 -0500 Received: from mail-pa0-f49.google.com ([209.85.220.49]:34978 "EHLO mail-pa0-f49.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752360AbcBHTCR (ORCPT ); Mon, 8 Feb 2016 14:02:17 -0500 Received: by mail-pa0-f49.google.com with SMTP id ho8so77817401pac.2 for ; Mon, 08 Feb 2016 11:02:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=ZO1E+hGQnUAAHvQ1u/OHcCOeHUIjQv7+1pT41aTL/rk=; b=HLC1OEtDAe346R/eVfQrLy3XpxjK1/+bCjX8khlNBMnECu/8H3jexMWIjE+Uaz/g6s zYC/RZv1a2V+h8muy8uoaU/NqNyJDmMLO9fPEBJVk14ivSCpk/Y5De2WS/Ucvm5L0FoE W/9gjgCuVSAk0grhUl4Yrz7qJPECPhbGvvKeY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=ZO1E+hGQnUAAHvQ1u/OHcCOeHUIjQv7+1pT41aTL/rk=; b=SXweAoOg7QcbFzhKyKLUNn5/xrjBkJdK2eg0SOWO+485Rmv+bpsuNt/pMU2v499JBn eg6A9w+zujJWo4FOqcd4LY8pK4l6udxM7u07/Qb8iVsUekPqxZiJqVspU9eqijuxNzYb ixpLZ0mEsVVfv64e7BNGYtAvjB7JC5rD66WPQzMgLD0vXjc8Xv28bP1LpsZkXyGltaKp YtqP1awulCj0P6Umqmw2+1cKy6DzPqEwPF4GO6e8225ueQDFTbVelXvC+ESsIrscujDE fBh9hqT1B1Knq/RKpzCD1WSdYFBBcBKonZ8YeIMDD1BPy/3r7uToiQkO7HAjgalJN+O3 +3rA== X-Gm-Message-State: AG10YOTmdQ6mRm1xgYFpjwlxf50cRcsJRqAEGnyynKhhngen9+ioFPlK4rK05BoTnbcPiast X-Received: by 10.66.54.102 with SMTP id i6mr44637480pap.71.1454958137485; Mon, 08 Feb 2016 11:02:17 -0800 (PST) Received: from yshi-Precision-T5600.corp.ad.wrs.com (unknown-216-82.windriver.com. [147.11.216.82]) by smtp.gmail.com with ESMTPSA id 17sm18296503pfp.96.2016.02.08.11.02.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 08 Feb 2016 11:02:16 -0800 (PST) From: Yang Shi To: aryabinin@virtuozzo.com, rostedt@goodmis.org, mingo@redhat.com Cc: linux-kernel@vger.kernel.org, linaro-kernel@lists.linaro.org, yang.shi@linaro.org Subject: [PATCH] trace, kasan: silence Kasan warning in check_stack Date: Mon, 8 Feb 2016 10:39:42 -0800 Message-Id: <1454956782-5944-1-git-send-email-yang.shi@linaro.org> X-Mailer: git-send-email 2.0.2 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When enabling stack trace via "echo 1 > /proc/sys/kernel/stack_tracer_enabled", the below KASAN warning is triggered: BUG: KASAN: stack-out-of-bounds in check_stack+0x344/0x848 at addr ffffffc0689ebab8 Read of size 8 by task ksoftirqd/4/29 page:ffffffbdc3a27ac0 count:0 mapcount:0 mapping: (null) index:0x0 flags: 0x0() page dumped because: kasan: bad access detected CPU: 4 PID: 29 Comm: ksoftirqd/4 Not tainted 4.5.0-rc1 #129 Hardware name: Freescale Layerscape 2085a RDB Board (DT) Call trace: [] dump_backtrace+0x0/0x3a0 [] show_stack+0x24/0x30 [] dump_stack+0xd8/0x168 [] kasan_report_error+0x6a0/0x920 [] kasan_report+0x70/0xb8 [] __asan_load8+0x60/0x78 [] check_stack+0x344/0x848 [] stack_trace_call+0x1c4/0x370 [] ftrace_ops_no_ops+0x2c0/0x590 [] ftrace_graph_call+0x0/0x14 [] fpsimd_thread_switch+0x24/0x1e8 [] __switch_to+0x34/0x218 [] __schedule+0x3ac/0x15b8 [] schedule+0x5c/0x178 [] smpboot_thread_fn+0x350/0x960 [] kthread+0x1d8/0x2b0 [] ret_from_fork+0x10/0x40 Memory state around the buggy address: ffffffc0689eb980: 00 00 00 00 00 00 00 00 f1 f1 f1 f1 00 f4 f4 f4 ffffffc0689eba00: f3 f3 f3 f3 00 00 00 00 00 00 00 00 00 00 00 00 >ffffffc0689eba80: 00 00 f1 f1 f1 f1 00 f4 f4 f4 f3 f3 f3 f3 00 00 ^ ffffffc0689ebb00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ffffffc0689ebb80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 The stacker tracer traverses the whole kernel stack when saving the max stack trace. It may touch the stack red zones to cause the warning. So, just disable the instrumentation to silence the warning. Signed-off-by: Yang Shi --- kernel/trace/trace_stack.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.0.2 diff --git a/kernel/trace/trace_stack.c b/kernel/trace/trace_stack.c index 202df6c..61e5e1e 100644 --- a/kernel/trace/trace_stack.c +++ b/kernel/trace/trace_stack.c @@ -156,7 +156,7 @@ check_stack(unsigned long ip, unsigned long *stack) for (; p < top && i < stack_trace_max.nr_entries; p++) { if (stack_dump_trace[i] == ULONG_MAX) break; - if (*p == stack_dump_trace[i]) { + if ((READ_ONCE_NOCHECK(*p)) == stack_dump_trace[i]) { stack_dump_trace[x] = stack_dump_trace[i++]; this_size = stack_trace_index[x++] = (top - p) * sizeof(unsigned long);