]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 6 Nov 2015 05:57:36 +0000 (21:57 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 6 Nov 2015 05:57:36 +0000 (21:57 -0800)
added patches:
revert-arm64-unwind-fix-pc-calculation.patch

queue-3.10/revert-arm64-unwind-fix-pc-calculation.patch [new file with mode: 0644]
queue-3.10/series

diff --git a/queue-3.10/revert-arm64-unwind-fix-pc-calculation.patch b/queue-3.10/revert-arm64-unwind-fix-pc-calculation.patch
new file mode 100644 (file)
index 0000000..dcad31e
--- /dev/null
@@ -0,0 +1,42 @@
+From 9702970c7bd3e2d6fecb642a190269131d4ac16c Mon Sep 17 00:00:00 2001
+From: Will Deacon <will.deacon@arm.com>
+Date: Wed, 28 Oct 2015 16:56:13 +0000
+Subject: Revert "ARM64: unwind: Fix PC calculation"
+
+From: Will Deacon <will.deacon@arm.com>
+
+commit 9702970c7bd3e2d6fecb642a190269131d4ac16c upstream.
+
+This reverts commit e306dfd06fcb44d21c80acb8e5a88d55f3d1cf63.
+
+With this patch applied, we were the only architecture making this sort
+of adjustment to the PC calculation in the unwinder. This causes
+problems for ftrace, where the PC values are matched against the
+contents of the stack frames in the callchain and fail to match any
+records after the address adjustment.
+
+Whilst there has been some effort to change ftrace to workaround this,
+those patches are not yet ready for mainline and, since we're the odd
+architecture in this regard, let's just step in line with other
+architectures (like arch/arm/) for now.
+
+Signed-off-by: Will Deacon <will.deacon@arm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+diff --git a/arch/arm64/kernel/stacktrace.c b/arch/arm64/kernel/stacktrace.c
+index 407991bf79f5..ccb6078ed9f2 100644
+--- a/arch/arm64/kernel/stacktrace.c
++++ b/arch/arm64/kernel/stacktrace.c
+@@ -48,11 +48,7 @@ int notrace unwind_frame(struct stackframe *frame)
+       frame->sp = fp + 0x10;
+       frame->fp = *(unsigned long *)(fp);
+-      /*
+-       * -4 here because we care about the PC at time of bl,
+-       * not where the return will go.
+-       */
+-      frame->pc = *(unsigned long *)(fp + 8) - 4;
++      frame->pc = *(unsigned long *)(fp + 8);
+       return 0;
+ }
index b9105f0af4becb1c14560c1771a4c1fa16bca2e0..fd3e04e795d6f03bc3850b90ba70b949dfc63e18 100644 (file)
@@ -10,3 +10,4 @@ drm-nouveau-gem-return-only-valid-domain-when-there-s-only-one.patch
 rbd-require-stable-pages-if-message-data-crcs-are-enabled.patch
 rbd-don-t-leak-parent_spec-in-rbd_dev_probe_parent.patch
 rbd-prevent-kernel-stack-blow-up-on-rbd-map.patch
+revert-arm64-unwind-fix-pc-calculation.patch