On Thu, Sep 17, 2020 at 02:25:50PM +0000, David Laight wrote:
I actually wonder if there is any code that really benefits from the red-zone.
The kernel has been without a red zone since 2002 at least:
commit 47f16da277d10ef9494f3e9da2a9113bb22bcd75 Author: Andi Kleen ak@muc.de Date: Tue Feb 12 20:17:35 2002 -0800
[PATCH] x86_64 merge: arch + asm
This adds the x86_64 arch and asm directories and a Documentation/x86_64.
... +CFLAGS += $(shell if $(CC) -mno-red-zone -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-mno-red-zone"; fi )
Also, from the ABI doc:
"A.2.2 Stack Layout
The Linux kernel may align the end of the input argument area to a 8, instead of 16, byte boundary. It does not honor the red zone (see section 3.2.2) and therefore this area is not allowed to be used by kernel code. Kernel code should be compiled by GCC with the option -mno-red-zone."
so forget the red zone.
On Thu, Sep 17, 2020 at 7:39 AM Borislav Petkov bp@alien8.de wrote:
On Thu, Sep 17, 2020 at 02:25:50PM +0000, David Laight wrote:
I actually wonder if there is any code that really benefits from the red-zone.
The kernel has been without a red zone since 2002 at least:
commit 47f16da277d10ef9494f3e9da2a9113bb22bcd75 Author: Andi Kleen ak@muc.de Date: Tue Feb 12 20:17:35 2002 -0800
[PATCH] x86_64 merge: arch + asm This adds the x86_64 arch and asm directories and a Documentation/x86_64.
... +CFLAGS += $(shell if $(CC) -mno-red-zone -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-mno-red-zone"; fi )
Also, from the ABI doc:
"A.2.2 Stack Layout
The Linux kernel may align the end of the input argument area to a 8, instead of 16, byte boundary. It does not honor the red zone (see section 3.2.2) and therefore this area is not allowed to be used by kernel code. Kernel code should be compiled by GCC with the option -mno-red-zone."
so forget the red zone.
-- Regards/Gruss, Boris.
Regardless of anything that any docs may or may not say, the kernel *can't* use a redzone -- an interrupt would overwrite it.
linux-stable-mirror@lists.linaro.org