[PATCH] fix is_at_popf() for compat tasks
authorChuck Ebbert <76306.1226@compuserve.com>
Tue, 26 Sep 2006 08:52:32 +0000 (10:52 +0200)
committerAndi Kleen <andi@basil.nowhere.org>
Tue, 26 Sep 2006 08:52:32 +0000 (10:52 +0200)
When testing for the REX instruction prefix, first check
for 32-bit mode because in compat mode the REX prefix is an
increment instruction.

Signed-off-by: Chuck Ebbert <76306.1226@compuserve.com>
Signed-off-by: Andi Kleen <ak@suse.de>
arch/x86_64/kernel/ptrace.c

index d35ec1bc696a51fd52f3fd2c0650c6dac51ab2c7..3a52c7bcfd12b79ef594a5c9f4f732f3e6af0be6 100644 (file)
@@ -141,8 +141,11 @@ static int is_at_popf(struct task_struct *child, struct pt_regs *regs)
                case 0xf0: case 0xf2: case 0xf3:
                        continue;
 
-               /* REX prefixes */
                case 0x40 ... 0x4f:
+                       if (regs->cs != __USER_CS)
+                               /* 32-bit mode: register increment */
+                               return 0;
+                       /* 64-bit mode: REX prefix */
                        continue;
 
                        /* CHECKME: f0, f2, f3 */