We really need force-cast when converting to final result type;
unsigned long can be silently converted to integer types and
to pointers, but not to bitwise.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
        case 8:  __get_user_x(8,__ret_gu,__val_gu,ptr); break;          \
        default: __get_user_bad(); break;                               \
        }                                                               \
-       (x) = (typeof(*(ptr)))__val_gu;                         \
+       (x) = (__force typeof(*(ptr)))__val_gu;                         \
        __ret_gu;                                                       \
 })
 
        int __gu_err;                                           \
        unsigned long __gu_val;                                 \
        __get_user_size(__gu_val,(ptr),(size),__gu_err);        \
-       (x) = (typeof(*(ptr)))__gu_val;                 \
+       (x) = (__force typeof(*(ptr)))__gu_val;                 \
        __gu_err;                                               \
 })