[PATCH v2] powerpc/powernv/idle: Restore IAMR after idle
Nicholas Piggin
npiggin at gmail.com
Thu Feb 28 01:53:55 AEDT 2019
Russell Currey's on February 8, 2019 9:11 pm:
> Without restoring the IAMR after idle, execution prevention on POWER9
> with Radix MMU is overwritten and the kernel can freely execute userspace without
> faulting.
>
> This is necessary when returning from any stop state that modifies user
> state, as well as hypervisor state.
>
> To test how this fails without this patch, load the lkdtm driver and
> do the following:
>
> echo EXEC_USERSPACE > /sys/kernel/debug/provoke-crash/DIRECT
>
> which won't fault, then boot the kernel with powersave=off, where it
> will fault. Applying this patch will fix this.
>
> Fixes: 3b10d0095a1e ("powerpc/mm/radix: Prevent kernel execution of user
> space")
> Cc: <stable at vger.kernel.org>
> Signed-off-by: Russell Currey <ruscur at russell.cc>
> ---
> Since v1:
> - no longer use paca to save IAMR, instead use _DAR (thanks mpe)
> - remove isync and pnv_wakeup_noloss section (thanks Nick)
Thanks for that, looks good.
Reviewed-by: Nicholas Piggin <npiggin at gmail.com>
More information about the Linuxppc-dev
mailing list