]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
x86: kprobes: fix swapped segment registers in kretprobe
authorRoland McGrath <roland@redhat.com>
Sat, 17 Jul 2010 01:17:12 +0000 (18:17 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 2 Aug 2010 17:29:56 +0000 (10:29 -0700)
commit a197479848a2f1a2a5c07cffa6c31ab5e8c82797 upstream.

In commit f007ea26, the order of the %es and %ds segment registers
got accidentally swapped, so synthesized 'struct pt_regs' frames
have the two values inverted.  It's almost sure that these values
never matter, and that they also never differ.  But wrong is wrong.

Signed-off-by: Roland McGrath <roland@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
arch/x86/kernel/kprobes.c

index 1658efdfb4e5a617b8919de37ca7ca61c4a4306f..ac4ed92d320eb2f4e6f7ab6d8a299b79388669b4 100644 (file)
@@ -632,8 +632,8 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
        /* Skip cs, ip, orig_ax and gs. */      \
        "       subl $16, %esp\n"       \
        "       pushl %fs\n"            \
-       "       pushl %ds\n"            \
        "       pushl %es\n"            \
+       "       pushl %ds\n"            \
        "       pushl %eax\n"           \
        "       pushl %ebp\n"           \
        "       pushl %edi\n"           \