[PATCH] powerpc: Keep const vars out of writable .sdata

Subsystems: linux for powerpc (32-bit and 64-bit), the rest

STALE3086d

2 messages, 2 authors, 2018-03-06 · open the first message on its own page

[PATCH] powerpc: Keep const vars out of writable .sdata

From: Kees Cook <hidden>
Date: 2018-03-01 01:02:55

From: Segher Boessenkool <redacted>

Newer gcc will support "-mno-readonly-in-sdata"[1], which makes sure that
the optimization on PPC32 for variables getting moved into the .sdata
section will not apply to const variables (which must be in .rodata).

This was originally noticed in mm/rodata_test.c when rodata_test_data
was not static:

c0695034 g     O .data	00000004 rodata_test_data

After this patch with an updated compiler, this is correctly in .rodata.

[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82411

Reported-by: Christophe Leroy <redacted>
Signed-off-by: Segher Boessenkool <redacted>
Signed-off-by: Kees Cook <redacted>
---
 arch/powerpc/Makefile | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index ccd2556bdb53..c7628e973084 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -141,7 +141,9 @@ AFLAGS-$(CONFIG_PPC64)	+= $(call cc-option,-mabi=elfv1)
 endif
 CFLAGS-$(CONFIG_PPC64)	+= $(call cc-option,-mcmodel=medium,$(call cc-option,-mminimal-toc))
 CFLAGS-$(CONFIG_PPC64)	+= $(call cc-option,-mno-pointers-to-nested-functions)
+
 CFLAGS-$(CONFIG_PPC32)	:= -ffixed-r2 $(MULTIPLEWORD)
+CFLAGS-$(CONFIG_PPC32)	+= $(call cc-option,-mno-readonly-in-sdata)
 
 ifeq ($(CONFIG_PPC_BOOK3S_64),y)
 CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=power7,-mtune=power4)
-- 
2.7.4


-- 
Kees Cook
Pixel Security

Re: powerpc: Keep const vars out of writable .sdata

From: Michael Ellerman <hidden>
Date: 2018-03-06 13:31:23

On Thu, 2018-03-01 at 01:02:49 UTC, Kees Cook wrote:
From: Segher Boessenkool <redacted>

Newer gcc will support "-mno-readonly-in-sdata"[1], which makes sure that
the optimization on PPC32 for variables getting moved into the .sdata
section will not apply to const variables (which must be in .rodata).

This was originally noticed in mm/rodata_test.c when rodata_test_data
was not static:

c0695034 g     O .data	00000004 rodata_test_data

After this patch with an updated compiler, this is correctly in .rodata.

[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82411

Reported-by: Christophe Leroy <redacted>
Signed-off-by: Segher Boessenkool <redacted>
Signed-off-by: Kees Cook <redacted>
Applied to powerpc next, thanks.

https://git.kernel.org/powerpc/c/51d42f0f5fd6c74144d19bf6a66352

cheers
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help