Russell Currey <rus...@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 <rus...@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