On Sun, Oct 6, 2013 at 4:53 AM, Russell King - ARM Linux linux@arm.linux.org.uk wrote:
On Sat, Oct 05, 2013 at 08:45:50PM -0400, Rob Clark wrote:
A new atomic modeset/pageflip ioctl being developed in DRM requires get_user() to work for 64bit types (in addition to just put_user()).
v1: original v2: pass correct size to check_uaccess, and better handling of narrowing double word read with __get_user_xb() (Russell King's suggestion)
I thought we had decided not to support this for 32-bit because x86_32 had problems here as well:
I don't remember.. actually I didn't even realize it wasn't merged until I tried to build with the atomic modeset ioctl.
Ville did have a patch to add it for x86_32, and that patch appears to be merged (96477b4c), so I just assume it wasn't removed since then.
BR, -R
#ifdef CONFIG_X86_32 #define __get_user_asm_u64(x, ptr, retval, errret) (x) = __get_user_bad() #define __get_user_asm_ex_u64(x, ptr) (x) = __get_user_bad() #else #define __get_user_asm_u64(x, ptr, retval, errret) \ __get_user_asm(x, ptr, retval, "q", "", "=r", errret) #define __get_user_asm_ex_u64(x, ptr) \ __get_user_asm_ex(x, ptr, "q", "", "=r") #endif