From 2e7fe37125e00cf9090416345e36af80d7761e9a Mon Sep 17 00:00:00 2001 From: Andi Kleen Date: Tue, 28 Jun 2005 15:17:29 +0200 Subject: [PATCH] [PATCH] Check for canonical addresses in ptrace Check for canonical addresses in ptrace This works around a AMD bug that allows to hang the CPU by passing illegal addresses. Signed-off-by: Andi Kleen --- arch/x86_64/kernel/ptrace.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arch/x86_64/kernel/ptrace.c b/arch/x86_64/kernel/ptrace.c index c799252b..812961f0 100644 --- a/arch/x86_64/kernel/ptrace.c +++ b/arch/x86_64/kernel/ptrace.c @@ -139,6 +139,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; -- 2.11.0