mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Gerald Britton <gbritton@alum.mit.edu>
To: Andrew Morton <akpm@osdl.org>, Linus Torvalds <torvalds@osdl.org>,
	Hugh Dickins <hugh@veritas.com>,
	phil.el@wanadoo.fr, gbritton@alum.mit.edu
Cc: linux-kernel@vger.kernel.org, oprofile-list@lists.sourceforge.net
Subject: [PATCH] x86: fix oprofile kernel callgraph regression
Date: Tue, 14 Feb 2006 10:19:04 -0500	[thread overview]
Message-ID: <20060214151904.GA30639@fog.sekrit.org> (raw)
In-Reply-To: <20060212190520.244fcaec.akpm@osdl.org>

Fix x86 oprofile regression introduced by:
  commit c34d1b4d165c67b966bca4aba026443d7ff161eb
  [PATCH] mm: kill check_user_page_readable

That commit reorganized tests for the userspace stack walking moving all
those tests into dump_backtrace(), however, dump_backtrace() was used for
both userspace and kernel stalk walking.  The result is typically no
recorded callgraph information for kernel samples.

Revive the original function as dump_kernel_backtrace() and rename the
other to dump_user_backtrace() to avoid future confusion.

Signed-off-by: Gerald Britton <gbritton@alum.mit.edu>
---
 backtrace.c |   19 ++++++++++++++++---
 1 files changed, 16 insertions(+), 3 deletions(-)
--- a/arch/i386/oprofile/backtrace.c	2006-02-13 19:27:40.000000000 -0500
+++ b/arch/i386/oprofile/backtrace.c	2006-02-13 19:30:32.000000000 -0500
@@ -20,7 +20,20 @@ struct frame_head {
 } __attribute__((packed));
 
 static struct frame_head *
-dump_backtrace(struct frame_head * head)
+dump_kernel_backtrace(struct frame_head * head)
+{
+	oprofile_add_trace(head->ret);
+
+	/* frame pointers should strictly progress back up the stack
+	 * (towards higher addresses) */
+	if (head >= head->ebp)
+		return NULL;
+
+	return head->ebp;
+}
+
+static struct frame_head *
+dump_user_backtrace(struct frame_head * head)
 {
 	struct frame_head bufhead[2];
 
@@ -105,10 +118,10 @@ x86_backtrace(struct pt_regs * const reg
 
 	if (!user_mode_vm(regs)) {
 		while (depth-- && valid_kernel_stack(head, regs))
-			head = dump_backtrace(head);
+			head = dump_kernel_backtrace(head);
 		return;
 	}
 
 	while (depth-- && head)
-		head = dump_backtrace(head);
+		head = dump_user_backtrace(head);
 }

  parent reply	other threads:[~2006-02-14 15:19 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-13  1:19 Linux 2.6.16-rc3 Linus Torvalds
2006-02-13  3:05 ` Andrew Morton
2006-02-13  3:22   ` Trond Myklebust
2006-02-13 15:09     ` Benjamin LaHaise
2006-02-13  3:28   ` Sanjoy Mahajan
2006-02-13  3:36   ` Jeff Garzik
2006-02-13  4:40   ` James Bottomley
2006-02-13  5:20   ` S3 sleep regression bisected (was Re: Linux 2.6.16-rc3) Sanjoy Mahajan
2006-02-13  7:04   ` Linux 2.6.16-rc3 Arjan van de Ven
2006-02-13  8:11   ` Jens Axboe
2006-02-13  9:22   ` Patrizio Bassi
2006-02-13 10:07   ` Linux 2.6.16-rc3 - x86_64 specific outstanding bugs Andi Kleen
2006-02-13 12:02   ` Linux 2.6.16-rc3 Takashi Iwai
2006-02-13 12:37     ` Patrizio Bassi
2006-02-13 13:13       ` Takashi Iwai
2006-02-13 13:31         ` Patrizio Bassi
2006-02-13 14:15           ` Takashi Iwai
2006-02-13 14:34             ` Patrizio Bassi
2006-02-13 14:39               ` Takashi Iwai
2006-02-13 13:09     ` Rafael J. Wysocki
2006-02-13 13:51       ` Takashi Iwai
2006-02-13 19:33         ` Rafael J. Wysocki
2006-02-13 16:36     ` Thierry Vignaud
2006-02-13 16:36     ` Thierry Vignaud
2006-02-15  6:51       ` Andrew Morton
2006-02-15 13:40         ` Thierry Vignaud
2006-02-15 20:00           ` Andrew Morton
2006-02-13 16:10   ` Adrian Bunk
2006-02-13 19:31     ` Daniel Drake
2006-02-13 20:30   ` Paul Fulghum
2006-02-13 20:38   ` Greg KH
2006-02-14 16:34     ` James Bottomley
2006-02-15 16:07       ` [linux-usb-devel] " Alan Stern
2006-02-15 16:27         ` Greg KH
2006-02-15 16:35           ` Arjan van de Ven
2006-02-15 17:06             ` Greg KH
2006-02-15 21:52               ` Alan Stern
2006-02-15 21:59                 ` Greg KH
2006-02-15 22:25                   ` Alan Stern
2006-02-15 22:37                     ` Greg KH
2006-02-15 22:51                       ` Alan Stern
2006-02-15 19:58         ` James Bottomley
2006-02-15 22:24           ` Alan Stern
2006-02-16  1:56       ` James Bottomley
2006-02-16 17:12         ` Russell King
2006-02-16 17:34           ` Stefan Richter
2006-02-16 17:57           ` James Bottomley
2006-02-16 18:09             ` Russell King
2006-02-16 18:14               ` James Bottomley
2006-02-16 18:18                 ` Russell King
2006-02-16 19:09                   ` James Bottomley
2006-02-16 20:01                     ` Jens Axboe
2006-02-18  0:42                       ` James Bottomley
2006-02-18  1:00                         ` Greg KH
2006-02-18  2:12                         ` Roland Dreier
2006-02-18 10:03                         ` [linux-usb-devel] " Sergey Vlasov
2006-02-19 14:30                           ` James Bottomley
2006-02-23 18:43                             ` James Bottomley
2006-02-18 20:16                         ` Alan Stern
2006-02-19 13:51                           ` James Bottomley
2006-02-14 15:19   ` Gerald Britton [this message]
2006-02-14 15:58     ` [PATCH] x86: fix oprofile kernel callgraph regression Hugh Dickins
2006-02-18 21:06   ` Linux 2.6.16-rc3 Helge Hafting
2006-02-22 16:49   ` Ben Castricum
2006-02-13  8:46 ` Jan Dittmer
2006-02-13  9:07   ` Yoichi Yuasa
2006-02-13 15:47   ` Linus Torvalds
2006-02-13 22:11     ` Jan Dittmer
     [not found] ` <3aa654a40602130231p1c476e99paa986fa198951839@mail.gmail.com>
2006-02-13 10:39   ` Andrew Morton
2006-02-13 10:54     ` Con Kolivas
2006-02-13 17:27       ` Andi Kleen
     [not found]     ` <3aa654a40602130251t174a5e4bg28a52a147cc9b2cf@mail.gmail.com>
2006-02-13 10:56       ` Andrew Morton
2006-02-14  2:44         ` Andrew Morton
2006-02-14  2:54           ` Dave Jones
2006-02-14  3:21             ` Andrew Morton
2006-02-13 17:09 ` 2.6.16-rc3: more regressions Adrian Bunk
2006-02-13 17:24   ` Dave Jones
2006-02-13 17:30   ` Dmitry Torokhov
2006-02-13 17:35   ` Linus Torvalds
2006-02-13 17:46     ` Dave Jones
2006-02-13 18:04       ` Linus Torvalds
2006-02-13 18:16         ` Linus Torvalds
2006-02-13 18:27           ` Dave Jones
2006-02-13 18:33             ` Linus Torvalds
2006-02-13 18:42               ` Adrian Bunk
2006-02-13 18:34           ` Adrian Bunk
2006-02-13 18:42             ` Dave Jones
2006-02-13 18:47               ` Adrian Bunk
2006-02-13 18:51               ` Alex Deucher
2006-02-13 18:50             ` Linus Torvalds
2006-02-13 19:09               ` Adrian Bunk
2006-02-13 19:17                 ` Linus Torvalds
2006-02-13 19:21                   ` Linus Torvalds
2006-02-13 23:27                   ` Jesse Allen
2006-02-13 23:35                     ` Felix Kühling
2006-02-15 16:22                       ` Jesse Allen
2006-02-16 22:00                         ` Dave Airlie
2006-02-14 23:55             ` Gerhard Mack
2006-02-14  0:08         ` Dave Airlie
2006-02-14  0:29           ` Dave Jones
2006-02-14  0:33             ` Dave Airlie
2006-02-13 18:33   ` Mark Fasheh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060214151904.GA30639@fog.sekrit.org \
    --to=gbritton@alum.mit.edu \
    --cc=akpm@osdl.org \
    --cc=hugh@veritas.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=oprofile-list@lists.sourceforge.net \
    --cc=phil.el@wanadoo.fr \
    --cc=torvalds@osdl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome