[PATCH 00/10] arm64: move thread_info off of the task stack

Laura Abbott labbott at redhat.com
Mon Oct 24 10:38:59 PDT 2016


On 10/19/2016 12:10 PM, Mark Rutland wrote:
> Hi all,
>
> Building atop of Andy's work on x86 and generic code, these patches move
> arm64's thread_info off of the stack and into task_struct. This protects
> thread_info from corruption in the face of stack overflow, and serves as
> a step towards fully robust stack overflow handling, which will be
> addressed by subsequent patches.
>
> These patches are based atop of a preparatory series [1] (itself based
> on v4.9-rc1) that's also necessary for s390. I've placed those patches
> in a branch [2] on my kernel.org repo, along with this series [3]. I'm
> hoping that the prep work will be able to become a stable branch/tag
> soon.
>
> I've given the series some light testing on a couple of SMP arm64
> platforms, but this has yet to see a thorough beating; please do try to
> make this fall over!
>
> Since RFC [4]:
> * Rely on prior patches to make thread_info arch-specific
> * Make smp_processor_id() use a per-cpu variable
> * Split out current_stack_pointer
> * Make SMP actually work
>
> [1] http://lkml.kernel.org/r/1476901693-8492-1-git-send-email-mark.rutland@arm.com
> [2] https://git.kernel.org/cgit/linux/kernel/git/mark/linux.git/log/?h=core/ti-stack-split
> [3] https://git.kernel.org/cgit/linux/kernel/git/mark/linux.git/log/?h=arm64/ti-stack-split
> [4] http://lkml.kernel.org/r/1473947349-14521-1-git-send-email-mark.rutland@arm.com
>
> Thanks,
> Mark.
>
> Mark Rutland (10):
>   arm64: thread_info remove stale items
>   arm64: asm-offsets: remove unused definitions
>   arm64: factor out current_stack_pointer
>   arm64: traps: simplify die() and __die()
>   arm64: prep stack walkers for THREAD_INFO_IN_TASK
>   arm64: move sp_el0 and tpidr_el1 into cpu_suspend_ctx
>   arm64: smp: prepare for smp_processor_id() rework
>   arm64: make cpu number a percpu variable
>   arm64: assembler: introduce ldr_this_cpu
>   arm64: split thread_info from task stack
>
>  arch/arm64/Kconfig                     |  1 +
>  arch/arm64/include/asm/Kbuild          |  1 -
>  arch/arm64/include/asm/assembler.h     | 19 +++++++++++++++----
>  arch/arm64/include/asm/current.h       | 22 ++++++++++++++++++++++
>  arch/arm64/include/asm/percpu.h        |  2 ++
>  arch/arm64/include/asm/perf_event.h    |  2 ++
>  arch/arm64/include/asm/smp.h           |  7 ++++++-
>  arch/arm64/include/asm/stack_pointer.h |  9 +++++++++
>  arch/arm64/include/asm/suspend.h       |  2 +-
>  arch/arm64/include/asm/thread_info.h   | 32 +-------------------------------
>  arch/arm64/kernel/asm-offsets.c        |  3 +--
>  arch/arm64/kernel/entry.S              |  6 +++---
>  arch/arm64/kernel/head.S               | 11 ++++++-----
>  arch/arm64/kernel/process.c            | 33 +++++++++++++++++++++++++++------
>  arch/arm64/kernel/return_address.c     |  1 +
>  arch/arm64/kernel/sleep.S              |  3 ---
>  arch/arm64/kernel/smp.c                | 14 +++++++++++---
>  arch/arm64/kernel/stacktrace.c         |  6 ++++++
>  arch/arm64/kernel/suspend.c            |  6 ------
>  arch/arm64/kernel/traps.c              | 14 +++++++-------
>  arch/arm64/mm/proc.S                   |  6 ++++++
>  21 files changed, 127 insertions(+), 73 deletions(-)
>  create mode 100644 arch/arm64/include/asm/current.h
>  create mode 100644 arch/arm64/include/asm/stack_pointer.h
>

I pulled the arm64/ti-stack-split branch on top of a Fedora
tree and ran back-to-back kernel RPM builds for a long weekend.
It's still going as of this morning so you can take that as a

Tested-by: Laura Abbott <labbott at redhat.com>

Thanks,
Laura



More information about the linux-arm-kernel mailing list