Received: by 2002:ac0:98c7:0:0:0:0:0 with SMTP id g7-v6csp557510imd; Thu, 1 Nov 2018 01:36:53 -0700 (PDT) X-Google-Smtp-Source: AJdET5fsZY25IbEhcLUMA+xPEdJXFByueaWE5O1cM+3CHWGIHKmrgmTuCPe2wHfkSWzcXjXpmeO7 X-Received: by 2002:a17:902:bb88:: with SMTP id m8-v6mr6601439pls.120.1541061412990; Thu, 01 Nov 2018 01:36:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1541061412; cv=none; d=google.com; s=arc-20160816; b=UAkTueuJMXMSXuv4qj1kY4oP6xjN3iQjJkIErLBzLCul2noJTk0VeYZ/ZFMKi/fgoO It/pD+iL5jAGCBP9d3JPAL0os2uD+Ukd7sq199Kt2zJTPr1Rn28LrzHIvH3CEKllritQ nnMOBiSN/3hJ9kxvDKImaR49JBNzyKW5GS5nNU19kVKz+LY/S9XJtRuZgv3tu65K50zK NZv4mKGDNzs61i6L1+zmUmy7ngR1pcra7nxlbr6r1Sc/O1WZzuSckUFnwp4fZCE0yMNN jKYy9+JGrnMlYSk+IRTiVwXevGnbyIjptXaPRJfB40xCloESDnm6AGX+WToddvCjImeN sGmQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=IOQTJYRcOoZoKCagEfHWBMz0f8DggFfihHTaLjZ3ngM=; b=dXuPh2l5+u+f6pUdYpmBQLqHcotBj4OY4qgSd7LVGGujCcbfcbLvj05ZsosINDxNqQ e3iWtuM7TSFfflEjInNcuiZ9sunfig+fHnnEnsGUo+LV+EwoQJDdYDJ8rbUDvCuyC4rf kR6yf2InHVeA4qNt04Qa1d9ikSsb8CEWtQ+173bXHVc+xB5iEmpezGqzk+7DMzIg3Q86 pKiEHX7RvDinOfuwIhw5E4SXFUoEe8c6qp7SG/lwNXnk0LXTiHbcrxMLw6OYLayGw0sD SE2YxCgIYmDT0vy0O+XfuMAsy6F1N/JFWiLiBqK1k/kMj35uTudl0qwHfi+mhaqiLSiS OP/Q== ARC-Authentication-Results: i=1; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p15-v6si31214340pgr.336.2018.11.01.01.36.36; Thu, 01 Nov 2018 01:36:52 -0700 (PDT) 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728149AbeKARiO (ORCPT + 99 others); Thu, 1 Nov 2018 13:38:14 -0400 Received: from mx2.mailbox.org ([80.241.60.215]:34514 "EHLO mx2.mailbox.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727704AbeKARiO (ORCPT ); Thu, 1 Nov 2018 13:38:14 -0400 Received: from smtp2.mailbox.org (smtp2.mailbox.org [80.241.60.241]) (using TLSv1.2 with cipher ECDHE-RSA-CHACHA20-POLY1305 (256/256 bits)) (No client certificate requested) by mx2.mailbox.org (Postfix) with ESMTPS id 2EEB3A11BD; Thu, 1 Nov 2018 09:36:10 +0100 (CET) X-Virus-Scanned: amavisd-new at heinlein-support.de Received: from smtp2.mailbox.org ([80.241.60.241]) by spamfilter05.heinlein-hosting.de (spamfilter05.heinlein-hosting.de [80.241.56.123]) (amavisd-new, port 10030) with ESMTP id 1mlOInRhCCEr; Thu, 1 Nov 2018 09:36:08 +0100 (CET) From: Aleksa Sarai To: "Naveen N. Rao" , Anil S Keshavamurthy , "David S. Miller" , Masami Hiramatsu , Jonathan Corbet , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Steven Rostedt , Shuah Khan , Alexei Starovoitov , Daniel Borkmann Cc: Aleksa Sarai , Aleksa Sarai , Christian Brauner , Brendan Gregg , netdev@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [PATCH v3 0/2] kretprobe: produce sane stack traces Date: Thu, 1 Nov 2018 19:35:49 +1100 Message-Id: <20181101083551.3805-1-cyphar@cyphar.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Historically, kretprobe has always produced unusable stack traces (kretprobe_trampoline is the only entry in most cases, because of the funky stack pointer overwriting). This has caused quite a few annoyances when using tracing to debug problems[1] -- since return values are only available with kretprobes but stack traces were only usable for kprobes, users had to probe both and then manually associate them. This patch series stores the stack trace within kretprobe_instance on the kprobe entry used to set up the kretprobe. This allows for DTrace-style stack aggregation between function entry and exit with tools like BPFtrace -- which would not really be doable if the stack unwinder understood kretprobe_trampoline. We also revert commit 76094a2cf46e ("ftrace: distinguish kretprobe'd functions in trace logs") and any follow-up changes because that code is no longer necessary now that stack traces are sane. *However* this patch might be a bit contentious since the original usecase (that ftrace returns shouldn't show kretprobe_trampoline) is arguably still an issue. Feel free to drop it if you think it is wrong. Patch changelog: v3: * kprobe: fix build on !CONFIG_KPROBES v2: * documentation: mention kretprobe stack-stashing * ftrace: add self-test for fixed kretprobe stacktraces * ftrace: remove [unknown/kretprobe'd] handling * kprobe: remove needless EXPORT statements * kprobe: minor corrections to current_kretprobe_instance (switch away from hlist_for_each_entry_safe) * kprobe: make maximum stack size 127, which is the ftrace default Aleksa Sarai (2): kretprobe: produce sane stack traces trace: remove kretprobed checks Documentation/kprobes.txt | 6 +- include/linux/kprobes.h | 27 +++++ kernel/events/callchain.c | 8 +- kernel/kprobes.c | 101 +++++++++++++++++- kernel/trace/trace.c | 11 +- kernel/trace/trace_output.c | 34 +----- .../test.d/kprobe/kretprobe_stacktrace.tc | 25 +++++ 7 files changed, 177 insertions(+), 35 deletions(-) create mode 100644 tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_stacktrace.tc -- 2.19.1