- i386-make-the-32-bit-frame-pointer-backtracer-fall-back-to-traditional.patch removed from -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The patch titled
     i386: make the 32 bit Frame Pointer backtracer fall back to traditional
has been removed from the -mm tree.  Its filename was
     i386-make-the-32-bit-frame-pointer-backtracer-fall-back-to-traditional.patch

This patch was dropped because it was merged into mainline or a subsystem tree

The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/

------------------------------------------------------
Subject: i386: make the 32 bit Frame Pointer backtracer fall back to traditional
From: Arjan van de Ven <arjan@xxxxxxxxxxxxxxx>

The 32 bit Frame Pointer backtracer code checks if the EBP is valid to do a
backtrace; however currently on a failure it just gives up and prints
nothing.  That's not very nice; we can do better and still print a decent
backtrace.

This patch changes the backtracer to fall back to the non-framepointer
backtracer if the EBP value isn't within the expected range; so on weird
stack corruption cases we get at least something out...

Signed-off-by: Arjan van de Ven <arjan@xxxxxxxxxxxxxxx>
Cc: Ingo Molnar <mingo@xxxxxxx>
Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Cc: Andi Kleen <ak@xxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
---

 arch/x86/kernel/traps_32.c |   43 +++++++++++++++++------------------
 1 file changed, 22 insertions(+), 21 deletions(-)

diff -puN arch/x86/kernel/traps_32.c~i386-make-the-32-bit-frame-pointer-backtracer-fall-back-to-traditional arch/x86/kernel/traps_32.c
--- a/arch/x86/kernel/traps_32.c~i386-make-the-32-bit-frame-pointer-backtracer-fall-back-to-traditional
+++ a/arch/x86/kernel/traps_32.c
@@ -120,26 +120,28 @@ static inline unsigned long print_contex
 {
 #ifdef	CONFIG_FRAME_POINTER
 	struct stack_frame *frame = (struct stack_frame *)bp;
-	while (valid_stack_ptr(tinfo, frame, sizeof(*frame))) {
-		struct stack_frame *next;
-		unsigned long addr;
-
-		addr = frame->return_address;
-		if (__kernel_text_address(addr))
-			ops->address(data, addr);
-		/*
-		 * break out of recursive entries (such as
-		 * end_of_stack_stop_unwind_function). Also,
-		 * we can never allow a frame pointer to
-		 * move downwards!
-		 */
-		next = frame->next_frame;
-		ebp = (unsigned long) next;
-		if (next <= frame)
-			break;
-		frame = next;
-	}
-#else
+	if (valid_stack_ptr(tinfo, frame, sizeof(*frame)))
+		while (valid_stack_ptr(tinfo, frame, sizeof(*frame))) {
+			struct stack_frame *next;
+			unsigned long addr;
+
+			addr = frame->return_address;
+			if (__kernel_text_address(addr))
+				ops->address(data, addr);
+			/*
+			 * break out of recursive entries (such as
+			 * end_of_stack_stop_unwind_function). Also,
+			 * we can never allow a frame pointer to
+			 * move downwards!
+			 */
+			next = frame->next_frame;
+			bp = (unsigned long)next;
+			if (next <= frame)
+				break;
+			frame = next;
+		}
+	else
+#endif
 	while (valid_stack_ptr(tinfo, stack, sizeof(*stack))) {
 		unsigned long addr;
 
@@ -147,7 +149,6 @@ static inline unsigned long print_contex
 		if (__kernel_text_address(addr))
 			ops->address(data, addr);
 	}
-#endif
 	return bp;
 }
 
_

Patches currently in -mm which might be from arjan@xxxxxxxxxxxxxxx are

git-input.patch
git-sched.patch
git-x86.patch
drivers-edac-use-round_jiffies_relative.patch

-
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel Newbies FAQ]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux