2021-08-09 15:13:13

by David Heidelberg

[permalink] [raw]
Subject: [PATCH] ARM: atags_to_fdt: don't warn about stack size

The merge_fdt_bootargs() function by definition consumes more than 1024
bytes of stack because it has a 1024 byte command line on the stack,
meaning that we always get a warning when building this file:

arch/arm/boot/compressed/atags_to_fdt.c: In function 'merge_fdt_bootargs':
arch/arm/boot/compressed/atags_to_fdt.c:98:1: warning: the frame size of 1032 bytes is larger than 1024 bytes [-Wframe-larger-than=]

However, as this is the decompressor and we know that it has a very shallow
call chain, and we do not actually risk overflowing the kernel stack
at runtime here.

This just shuts up the warning by disabling the warning flag for this
file.

Tested on Nexus 7 2012 builds.

Original Author: Arnd Bergmann <[email protected]>
Reference: https://lore.kernel.org/lkml/8232115.18ykgQ6J5T@wuerfel/

Cc: Arnd Bergmann <[email protected]>
Cc: Nicolas Pitre <[email protected]>
Cc: Russell King <[email protected]>
Cc: Ard Biesheuvel <[email protected]>
Cc: Marc Zyngier <[email protected]>
Cc: [email protected]
Cc: [email protected]

Signed-off-by: David Heidelberg <[email protected]>
---
arch/arm/boot/compressed/Makefile | 2 ++
1 file changed, 2 insertions(+)

diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
index 9d91ae1091b0..91265e7ff672 100644
--- a/arch/arm/boot/compressed/Makefile
+++ b/arch/arm/boot/compressed/Makefile
@@ -85,6 +85,8 @@ compress-$(CONFIG_KERNEL_LZ4) = lz4
libfdt_objs := fdt_rw.o fdt_ro.o fdt_wip.o fdt.o

ifeq ($(CONFIG_ARM_ATAG_DTB_COMPAT),y)
+CFLAGS_REMOVE_atags_to_fdt.o += -Wframe-larger-than=${CONFIG_FRAME_WARN}
+CFLAGS_atags_to_fdt.o += -Wframe-larger-than=1280
OBJS += $(libfdt_objs) atags_to_fdt.o
endif
ifeq ($(CONFIG_USE_OF),y)
--
2.30.2


2021-08-09 15:26:42

by Russell King (Oracle)

[permalink] [raw]
Subject: Re: [PATCH] ARM: atags_to_fdt: don't warn about stack size

On Mon, Aug 09, 2021 at 05:10:21PM +0200, David Heidelberg wrote:
> The merge_fdt_bootargs() function by definition consumes more than 1024
> bytes of stack because it has a 1024 byte command line on the stack,
> meaning that we always get a warning when building this file:
>
> arch/arm/boot/compressed/atags_to_fdt.c: In function 'merge_fdt_bootargs':
> arch/arm/boot/compressed/atags_to_fdt.c:98:1: warning: the frame size of 1032 bytes is larger than 1024 bytes [-Wframe-larger-than=]
>
> However, as this is the decompressor and we know that it has a very shallow
> call chain, and we do not actually risk overflowing the kernel stack
> at runtime here.
>
> This just shuts up the warning by disabling the warning flag for this
> file.
>
> Tested on Nexus 7 2012 builds.
>
> Original Author: Arnd Bergmann <[email protected]>
> Reference: https://lore.kernel.org/lkml/8232115.18ykgQ6J5T@wuerfel/
>
> Cc: Arnd Bergmann <[email protected]>
> Cc: Nicolas Pitre <[email protected]>
> Cc: Russell King <[email protected]>
> Cc: Ard Biesheuvel <[email protected]>
> Cc: Marc Zyngier <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
>
> Signed-off-by: David Heidelberg <[email protected]>

I assume Arnd never sent his v3 from what I see in the thread you link
to above.

This needs to go to the patch system to be applied. Details in my
signature below. Thanks.

--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

2021-08-09 16:05:48

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH] ARM: atags_to_fdt: don't warn about stack size

On Mon, Aug 9, 2021 at 5:24 PM Russell King (Oracle)
<[email protected]> wrote:
> On Mon, Aug 09, 2021 at 05:10:21PM +0200, David Heidelberg wrote:
> > Signed-off-by: David Heidelberg <[email protected]>

Acked-by: Arnd Bergmann <[email protected]>

(or keep my original Signed-off-by if you like)

> I assume Arnd never sent his v3 from what I see in the thread you link
> to above.

Yes, it's in my ever-growing backlog of things I plan to eventually resubmit.

In this case, I actually have a different patch in my tree, but that in turn
depends on other stuff I have to submit first (reorganizing the way that
warning options get handled based on compiler version etc), and the
version here is what works on current mainline kernels.

Arnd

2021-08-09 16:46:37

by David Heidelberg

[permalink] [raw]
Subject: Re: [PATCH] ARM: atags_to_fdt: don't warn about stack size

Thank you, in next iteration I'll keep you as author and keep your S-off-by


-------- Původní zpráva --------
Odesílatel: Arnd Bergmann <[email protected]>
Odesláno: 9. srpna 2021 16:02:36 UTC
Komu: "Russell King (Oracle)" <[email protected]>
Kopie: David Heidelberg <[email protected]>, Arnd Bergmann <[email protected]>, Jon Medhurst <[email protected]>, Ard Biesheuvel <[email protected]>, Marc Zyngier <[email protected]>, Nicolas Pitre <[email protected]>, Linux Kernel Mailing List <[email protected]>, Linux ARM <[email protected]>
Předmět: Re: [PATCH] ARM: atags_to_fdt: don't warn about stack size

On Mon, Aug 9, 2021 at 5:24 PM Russell King (Oracle)
<[email protected]> wrote:
> On Mon, Aug 09, 2021 at 05:10:21PM +0200, David Heidelberg wrote:
> > Signed-off-by: David Heidelberg <[email protected]>

Acked-by: Arnd Bergmann <[email protected]>

(or keep my original Signed-off-by if you like)

> I assume Arnd never sent his v3 from what I see in the thread you link
> to above.

Yes, it's in my ever-growing backlog of things I plan to eventually resubmit.

In this case, I actually have a different patch in my tree, but that in turn
depends on other stuff I have to submit first (reorganizing the way that
warning options get handled based on compiler version etc), and the
version here is what works on current mainline kernels.

Arnd

S pozdravem a přáním krásného dne
David Heidelberg

2021-08-09 20:09:44

by Nicolas Pitre

[permalink] [raw]
Subject: Re: [PATCH] ARM: atags_to_fdt: don't warn about stack size

On Mon, 9 Aug 2021, David Heidelberg wrote:

> The merge_fdt_bootargs() function by definition consumes more than 1024
> bytes of stack because it has a 1024 byte command line on the stack,
> meaning that we always get a warning when building this file:
>
> arch/arm/boot/compressed/atags_to_fdt.c: In function 'merge_fdt_bootargs':
> arch/arm/boot/compressed/atags_to_fdt.c:98:1: warning: the frame size of 1032 bytes is larger than 1024 bytes [-Wframe-larger-than=]
>
> However, as this is the decompressor and we know that it has a very shallow
> call chain, and we do not actually risk overflowing the kernel stack
> at runtime here.
>
> This just shuts up the warning by disabling the warning flag for this
> file.
>
> Tested on Nexus 7 2012 builds.
>
> Original Author: Arnd Bergmann <[email protected]>
> Reference: https://lore.kernel.org/lkml/8232115.18ykgQ6J5T@wuerfel/
>
> Cc: Arnd Bergmann <[email protected]>
> Cc: Nicolas Pitre <[email protected]>
> Cc: Russell King <[email protected]>
> Cc: Ard Biesheuvel <[email protected]>
> Cc: Marc Zyngier <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
>
> Signed-off-by: David Heidelberg <[email protected]>

Acked-by: Nicolas Pitre <[email protected]>

> ---
> arch/arm/boot/compressed/Makefile | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
> index 9d91ae1091b0..91265e7ff672 100644
> --- a/arch/arm/boot/compressed/Makefile
> +++ b/arch/arm/boot/compressed/Makefile
> @@ -85,6 +85,8 @@ compress-$(CONFIG_KERNEL_LZ4) = lz4
> libfdt_objs := fdt_rw.o fdt_ro.o fdt_wip.o fdt.o
>
> ifeq ($(CONFIG_ARM_ATAG_DTB_COMPAT),y)
> +CFLAGS_REMOVE_atags_to_fdt.o += -Wframe-larger-than=${CONFIG_FRAME_WARN}
> +CFLAGS_atags_to_fdt.o += -Wframe-larger-than=1280
> OBJS += $(libfdt_objs) atags_to_fdt.o
> endif
> ifeq ($(CONFIG_USE_OF),y)
> --
> 2.30.2
>
>