[PATCH 0/2] ARM: shmobile: Move written variables from .text to .data

Kees Cook keescook at chromium.org
Thu Jan 28 07:19:34 PST 2016


On Thu, Jan 28, 2016 at 7:04 AM, Geert Uytterhoeven
<geert+renesas at glider.be> wrote:
>         Hi Simon, Magnus,
>
> When CONFIG_ARM_KERNMEM_PERMS=y and CONFIG_DEBUG_RODATA=y, the kernel
> crashes during system suspend:
>
>     Freezing user space processes ... (elapsed 0.004 seconds) done.
>     Freezing remaining freezable tasks ... (elapsed 0.002 seconds)
>     done.
>     PM: suspend of devices complete after 111.948 msecs
>     PM: late suspend of devices complete after 1.086 msecs
>     PM: noirq suspend of devices complete after 11.576 msecs
>     Disabling non-boot CPUs ...
>     Kernel panic - not syncing: Attempted to kill the idle task!
>     1014ec ---[ end Kernel panic - not syncing: Attempted to kill the idle task!
>     CPU0: stopping
>
> This happens because the shmobile assembler sources have several
> variables that are written to in the .text section, while .text is
> mapped read-only after kernel bootup if CONFIG_DEBUG_RODATA=y.
>
> This series fixes this by moving variables from .text to .data.
> Note that there's still an issue with shmobile_boot_fn and
> shmobile_boot_arg in arch/arm/mach-shmobile/headsmp.S.
> So far I didn't manage to fix this (the code and data are copied to
> SRAM on some SoCs).  However, currently this are harmless, as these are
> written during early kernel boot up only, before .text is marked
> read-only.
>
> These issues were uncovered by "[PATCH v2] ARM: mm: flip priority of
> CONFIG_DEBUG_RODATA". As that patch is planned for queue up (again)
> soon, it may be a good idea to queue these fixes for v4.5, to avoid a
> dependency with the arm tree.
>
> Tested hard on sh73a0/kzm9g, r8a7791/koelsch.
> Tested lighter on emev2/kzm9d[*], r8a73a4/ape6evm, r8a7740/armadillo, and
> r8a7779/marzen[*] ([*] = no remote resume).
>
> Thanks!
>
> Geert Uytterhoeven (2):
>   ARM: shmobile: Move shmobile_scu_base from .text to .data
>   ARM: shmobile: Move shmobile_smp_{mpidr,fn,arg}[] from .text to .data
>
>  arch/arm/mach-shmobile/headsmp-scu.S |  6 ------
>  arch/arm/mach-shmobile/headsmp.S     | 22 ++++++++++++++++------
>  arch/arm/mach-shmobile/platsmp-scu.c |  3 +++
>  3 files changed, 19 insertions(+), 12 deletions(-)

Thanks!

Reviewed-by: Kees Cook <keescook at chromium.org>

And FWIW, I've now got the RODATA patch back in the patch queue, since
we're at -rc1:
http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=8501/1

-Kees

>
> --
> 1.9.1
>
> Gr{oetje,eeting}s,
>
>                                                 Geert
>
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org
>
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
>                                                             -- Linus Torvalds



-- 
Kees Cook
Chrome OS & Brillo Security



More information about the linux-arm-kernel mailing list