I've just seen that Linus has merged my second patch, so here is one more
missing piece to fix ia64 in ia32 emulation as well.
~Markus
p.s. this patch has not been tested due to lack of hardware
Andi Kleen wrote:
On Sunday 09 October 2005 18:54, Markus F.X.J. Oberhumer wrote:
Here is a somewhat simplified version of my previous patch with
updated comments.
Attached is also a new small user-space test program which does not
depend on any special gcc features and should trigger the problem on all
machines.
I already have a version of the patch in my queue, but it's not a strict
bugfix so it's only for after 2.6.14.
-Andi
ftp://ftp.firstfloor.org/pub/ak/x86_64/quilt-current/patches/sigframe-alignment
--
Markus Oberhumer, <[email protected]>, http://www.oberhumer.com/
[PATCH] i386: fix stack alignment for signal handlers (ia64)
This fixes the setup of the alignment of the signal frame, so that all
signal handlers are run with a properly aligned stack frame.
The current code "over-aligns" the stack pointer so that the stack frame
is effectively always mis-aligned by 4 bytes. But what we really want
is that on function entry ((sp + 4) & 15) == 0, which matches what would
happen if the stack were aligned before a "call" instruction.
[ This patch fixes ia64. i386 and x86_64 are already fixed by
git commit d347f372273c2b3d86a66e2e1c94c790c208e166 ]
Signed-off-by: Markus F.X.J. Oberhumer <[email protected]>
Index: linux-2.6.git/arch/ia64/ia32/ia32_signal.c
===================================================================
--- linux-2.6.git.orig/arch/ia64/ia32/ia32_signal.c
+++ linux-2.6.git/arch/ia64/ia32/ia32_signal.c
@@ -810,7 +810,11 @@
}
/* Legacy stack switching not supported */
- return (void __user *)((esp - frame_size) & -8ul);
+ esp -= frame_size;
+ /* Align the stack pointer according to the i386 ABI,
+ * i.e. so that on function entry ((sp + 4) & 15) == 0. */
+ esp = ((esp + 4) & -16ul) - 4;
+ return (void __user *) esp;
}
static int
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]