[PATCH] x86_64: check if ptrace RIP is canonical
[pandora-kernel.git] / arch / x86_64 / kernel / ptrace.c
index e26e86b..8922121 100644 (file)
@@ -277,6 +277,11 @@ static int putreg(struct task_struct *child,
                                return -EIO;
                        value &= 0xffff;
                        break;
+               case offsetof(struct user_regs_struct, rip):
+                       /* Check if the new RIP address is canonical */
+                       if (value >= TASK_SIZE)
+                               return -EIO;
+                       break;
        }
        put_stack_long(child, regno - sizeof(struct pt_regs), value);
        return 0;