On Sat, Feb 18, 2017 at 1:33 AM, Michael Ellerman <m...@ellerman.id.au> wrote:
> Add PPC32 to the opt-out list, otherwise it breaks the build.
>
> Signed-off-by: Michael Ellerman <m...@ellerman.id.au>
> ---
>  lib/test_user_copy.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/lib/test_user_copy.c b/lib/test_user_copy.c
> index 4a79f2c1cd6e..6f335a3d4ae2 100644
> --- a/lib/test_user_copy.c
> +++ b/lib/test_user_copy.c
> @@ -37,6 +37,7 @@
>                             !defined(CONFIG_MICROBLAZE) &&      \
>                             !defined(CONFIG_MN10300) &&         \
>                             !defined(CONFIG_NIOS2) &&           \
> +                           !defined(CONFIG_PPC32) &&           \
>                             !defined(CONFIG_SUPERH))
>  # define TEST_U64
>  #endif

I'm fine to add this, but I'm curious why it fails? ppc uaccess.h has:

#define get_user(x, ptr) \
        __get_user_check((x), (ptr), sizeof(*(ptr)))

#define __get_user_check(x, ptr, size)                                  \
({                                                                      \
...
                __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \

#define __get_user_size(x, ptr, size, retval)                   \
do {                                                            \
...
        case 8: __get_user_asm2(x, ptr, retval);  break;        \

#ifdef __powerpc64__
#define __get_user_asm2(x, addr, err)                   \
        __get_user_asm(x, addr, err, "ld")
#else /* __powerpc64__ */
#define __get_user_asm2(x, addr, err)                   \
        __asm__ __volatile__(                           \
...

It looks like __get_user_asm2() was explicitly designed for handling
64-bit get_user()?

-Kees

-- 
Kees Cook
Pixel Security

Reply via email to