Message ID | 20200515172756.27185-7-will@kernel.org (mailing list archive) |
---|---|
State | Mainlined |
Commit | 871e100e432c651c9c46fb9c3184b4577e0de3ae |
Headers | show |
Series | Clean up Shadow Call Stack patches for 5.8 | expand |
On Fri, May 15, 2020 at 06:27:56PM +0100, Will Deacon wrote: > Defining static shadow call stacks is not architecture-specific, so move > the DEFINE_SCS() macro into the core header file. > > Signed-off-by: Will Deacon <will@kernel.org> I think that we'll have to pull this back into arch code if/when we deal with VMAP'd stacks, so I'm not sure this is worthwhile given the diffstat is balanced. Mark. > --- > arch/arm64/kernel/scs.c | 4 ---- > include/linux/scs.h | 4 ++++ > 2 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/arch/arm64/kernel/scs.c b/arch/arm64/kernel/scs.c > index 955875dff9e1..e8f7ff45dd8f 100644 > --- a/arch/arm64/kernel/scs.c > +++ b/arch/arm64/kernel/scs.c > @@ -8,10 +8,6 @@ > #include <linux/percpu.h> > #include <linux/scs.h> > > -/* Allocate a static per-CPU shadow stack */ > -#define DEFINE_SCS(name) \ > - DEFINE_PER_CPU(unsigned long [SCS_SIZE/sizeof(long)], name) \ > - > DEFINE_SCS(irq_shadow_call_stack); > > #ifdef CONFIG_ARM_SDE_INTERFACE > diff --git a/include/linux/scs.h b/include/linux/scs.h > index 2fd3df50e93e..6dec390cf154 100644 > --- a/include/linux/scs.h > +++ b/include/linux/scs.h > @@ -26,6 +26,10 @@ > /* An illegal pointer value to mark the end of the shadow stack. */ > #define SCS_END_MAGIC (0x5f6UL + POISON_POINTER_DELTA) > > +/* Allocate a static per-CPU shadow stack */ > +#define DEFINE_SCS(name) \ > + DEFINE_PER_CPU(unsigned long [SCS_SIZE/sizeof(long)], name) \ > + > #define task_scs(tsk) (task_thread_info(tsk)->scs_base) > #define task_scs_sp(tsk) (task_thread_info(tsk)->scs_sp) > > -- > 2.26.2.761.g0e0b3e54be-goog >
On Mon, May 18, 2020 at 01:14:41PM +0100, Mark Rutland wrote: > On Fri, May 15, 2020 at 06:27:56PM +0100, Will Deacon wrote: > > Defining static shadow call stacks is not architecture-specific, so move > > the DEFINE_SCS() macro into the core header file. > > > > Signed-off-by: Will Deacon <will@kernel.org> > > I think that we'll have to pull this back into arch code if/when we deal > with VMAP'd stacks, so I'm not sure this is worthwhile given the > diffstat is balanced. I dunno, if another architecture wants to use this then having the stuff in the core code makes sense to me. I also want to kill asm/scs.h entirely and move our asm macros somewhere else where they're not mixed up with the C headers. Will
On Mon, May 18, 2020 at 02:26:12PM +0100, Will Deacon wrote: > On Mon, May 18, 2020 at 01:14:41PM +0100, Mark Rutland wrote: > > On Fri, May 15, 2020 at 06:27:56PM +0100, Will Deacon wrote: > > > Defining static shadow call stacks is not architecture-specific, so move > > > the DEFINE_SCS() macro into the core header file. > > > > > > Signed-off-by: Will Deacon <will@kernel.org> > > > > I think that we'll have to pull this back into arch code if/when we deal > > with VMAP'd stacks, so I'm not sure this is worthwhile given the > > diffstat is balanced. > > I dunno, if another architecture wants to use this then having the stuff > in the core code makes sense to me. I also want to kill asm/scs.h entirely > and move our asm macros somewhere else where they're not mixed up with the > C headers. Thinking about it a bit further, we'd have to make bigger changes anyhow (to dynamically allocate), but given we can do that for regular stacks we can probably do something similar here. So no strong feelings either way on this patch. Reviewed-by: Mark Rutland <mark.rutland@arm.com> Mark.
diff --git a/arch/arm64/kernel/scs.c b/arch/arm64/kernel/scs.c index 955875dff9e1..e8f7ff45dd8f 100644 --- a/arch/arm64/kernel/scs.c +++ b/arch/arm64/kernel/scs.c @@ -8,10 +8,6 @@ #include <linux/percpu.h> #include <linux/scs.h> -/* Allocate a static per-CPU shadow stack */ -#define DEFINE_SCS(name) \ - DEFINE_PER_CPU(unsigned long [SCS_SIZE/sizeof(long)], name) \ - DEFINE_SCS(irq_shadow_call_stack); #ifdef CONFIG_ARM_SDE_INTERFACE diff --git a/include/linux/scs.h b/include/linux/scs.h index 2fd3df50e93e..6dec390cf154 100644 --- a/include/linux/scs.h +++ b/include/linux/scs.h @@ -26,6 +26,10 @@ /* An illegal pointer value to mark the end of the shadow stack. */ #define SCS_END_MAGIC (0x5f6UL + POISON_POINTER_DELTA) +/* Allocate a static per-CPU shadow stack */ +#define DEFINE_SCS(name) \ + DEFINE_PER_CPU(unsigned long [SCS_SIZE/sizeof(long)], name) \ + #define task_scs(tsk) (task_thread_info(tsk)->scs_base) #define task_scs_sp(tsk) (task_thread_info(tsk)->scs_sp)
Defining static shadow call stacks is not architecture-specific, so move the DEFINE_SCS() macro into the core header file. Signed-off-by: Will Deacon <will@kernel.org> --- arch/arm64/kernel/scs.c | 4 ---- include/linux/scs.h | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-)