@@ -22,7 +22,8 @@ static void gp_handler(struct ex_regs *regs)
#define GP_ASM(stmt, in, clobber) \
- asm ("mov" W " $1f, %[expected_rip]\n\t" \
+ asm volatile ( \
+ "mov" W " $1f, %[expected_rip]\n\t" \
"movl $2f-1f, %[skip_count]\n\t" \
"1: " stmt "\n\t" \
"2: " \
@@ -159,7 +160,8 @@ static int do_ring3(void (*fn)(const char *), const char *arg)
: [ret] "=&a" (ret)
: [user_ds] "i" (USER_DS),
[user_cs] "i" (USER_CS),
- [user_stack_top]"m"(user_stack[sizeof user_stack]),
+ [user_stack_top]"m"(user_stack[sizeof(user_stack) -
+ sizeof(long)]),
[fn]"r"(fn),
[arg]"D"(arg),
[kernel_ds]"i"(KERNEL_DS),