x86-64: Fix register leak in 32-bit syscall audting
authorJan Beulich <JBeulich@novell.com>
Mon, 26 Oct 2009 15:20:29 +0000 (15:20 +0000)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 10 Nov 2009 00:52:19 +0000 (16:52 -0800)
commit91d5ee32e8562dbb2cb801e85d15f39a81849147
tree34db5ccc4acfeec737349cdc788b62c60692d911
parentc632a72c55ac1621f8e15f69ed35ee1cec3dd6f2
x86-64: Fix register leak in 32-bit syscall audting

commit 81766741fe1eee3884219e8daaf03f466f2ed52f upstream.

Restoring %ebp after the call to audit_syscall_exit() is not
only unnecessary (because the register didn't get clobbered),
but in the sysenter case wasn't even doing the right thing: It
loaded %ebp from a location below the top of stack (RBP <
ARGOFFSET), i.e. arbitrary kernel data got passed back to user
mode in the register.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
Acked-by: Roland McGrath <roland@redhat.com>
LKML-Reference: <4AE5CC4D020000780001BD13@vpn.id2.novell.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
arch/x86/ia32/ia32entry.S