Thread (11 messages) flat view 11 messages, 4 authors, 2014-08-21

[PATCH v3] ARM: add get_user() support for 8 byte types

From: arnd@arndb.de (Arnd Bergmann)
Date: 2014-06-12 17:05:05
Also in: lkml

On Thursday 12 June 2014 16:42:35 Daniel Thompson wrote:
quoted hunk ↗ jump to hunk
 #define __get_user_check(x,p)                                                  \
        ({                                                              \
                unsigned long __limit = current_thread_info()->addr_limit - 1; \
                register const typeof(*(p)) __user *__p asm("r0") = (p);\
-               register unsigned long __r2 asm("r2");                  \
+               register typeof(x) __r2 asm("r2");                      \
                register unsigned long __l asm("r1") = __limit;         \
                register int __e asm("r0");                             \
                switch (sizeof(*(__p))) {                               \
@@ -142,6 +152,12 @@ extern int __get_user_4(void *);
                case 4:                                                 \
                        __get_user_x(__r2, __p, __e, __l, 4);           \
                        break;                                          \
+               case 8:                                                 \
+                       if (sizeof((x)) < 8)                            \
+                               __get_user_xb(__r2, __p, __e, __l, 4);  \
+                       else                                            \
+                               __get_user_x(__r2, __p, __e, __l, 8);   \
+                       break;                                          \
                default: __e = __get_user_bad(); break;                 \
                }                                                       \
                x = (typeof(*(p))) __r2;                                \
I don't think there is a way to do this without copying the
__builtin_choose_expr() hack from x86.

	Arnd
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help