[PATCH 2/5] powerpc/futex: GUAP support for futex ops
LEROY Christophe
christophe.leroy at c-s.fr
Sat Oct 27 03:32:38 AEDT 2018
Russell Currey <ruscur at russell.cc> a écrit :
> Wrap the futex operations in GUAP locks and unlocks.
Does it means futex doesn't work anymore once only patch 1 is applied
? If so, then you should split patch 1 in two parts and reorder
patches so that guap can only be activated once all necessary changes
are done. Otherwise the serie won't be bisectable
Christophe
>
> Signed-off-by: Russell Currey <ruscur at russell.cc>
> ---
> arch/powerpc/include/asm/futex.h | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/arch/powerpc/include/asm/futex.h
> b/arch/powerpc/include/asm/futex.h
> index 94542776a62d..3aed640ee9ef 100644
> --- a/arch/powerpc/include/asm/futex.h
> +++ b/arch/powerpc/include/asm/futex.h
> @@ -35,6 +35,7 @@ static inline int arch_futex_atomic_op_inuser(int
> op, int oparg, int *oval,
> {
> int oldval = 0, ret;
>
> + unlock_user_access();
> pagefault_disable();
>
> switch (op) {
> @@ -62,6 +63,7 @@ static inline int arch_futex_atomic_op_inuser(int
> op, int oparg, int *oval,
> if (!ret)
> *oval = oldval;
>
> + lock_user_access();
> return ret;
> }
>
> @@ -75,6 +77,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
> if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
> return -EFAULT;
>
> + unlock_user_access();
> __asm__ __volatile__ (
> PPC_ATOMIC_ENTRY_BARRIER
> "1: lwarx %1,0,%3 # futex_atomic_cmpxchg_inatomic\n\
> @@ -95,6 +98,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
> : "cc", "memory");
>
> *uval = prev;
> + lock_user_access();
> return ret;
> }
>
> --
> 2.19.1
More information about the Linuxppc-dev
mailing list