Re: vmsplice exploits, stack protector and Makefiles

From: Linus Torvalds
Date: Wed Feb 13 2008 - 10:54:42 EST



Ingo,
if you're merging this, please do the independent parts really
independenrly. For example, the above is a patch in its own right, and
probably worth doing regardless of anything else.

(Same goes for the ACPI parts, I'll bounce that part to Len,

Linus

On Wed, 13 Feb 2008, pageexec@xxxxxxxxxxx wrote:
>
> diff -u linux-2.6.24.2-pax/arch/x86/kernel/entry_64.S linux-2.6.24.2-pax/arch/x86/kernel/entry_64.S
> --- linux-2.6.24.2-pax/arch/x86/kernel/entry_64.S 2008-01-25 15:34:25.000000000 +0100
> +++ linux-2.6.24.2-pax/arch/x86/kernel/entry_64.S 2008-02-13 11:12:26.000000000 +0100
> @@ -440,6 +440,7 @@
> CFI_REGISTER rip, r11
> SAVE_REST
> FIXUP_TOP_OF_STACK %r11
> + movq %rsp, %rcx
> call sys_execve
> RESTORE_TOP_OF_STACK %r11
> movq %rax,RAX(%rsp)
> @@ -1004,15 +1005,16 @@
> * rdi: name, rsi: argv, rdx: envp
> *
> * We want to fallback into:
> - * extern long sys_execve(char *name, char **argv,char **envp, struct pt_regs regs)
> + * extern long sys_execve(char *name, char **argv,char **envp, struct pt_regs *regs)
> *
> * do_sys_execve asm fallback arguments:
> - * rdi: name, rsi: argv, rdx: envp, fake frame on the stack
> + * rdi: name, rsi: argv, rdx: envp, rcx: fake frame on the stack
> */
> ENTRY(kernel_execve)
> CFI_STARTPROC
> FAKE_STACK_FRAME $0
> SAVE_ALL
> + movq %rsp,%rcx
> call sys_execve
> movq %rax, RAX(%rsp)
> RESTORE_REST
> diff -u linux-2.6.24.2-pax/arch/x86/kernel/process_64.c linux-2.6.24.2-pax/arch/x86/kernel/process_64.c
> --- linux-2.6.24.2-pax/arch/x86/kernel/process_64.c 2008-01-25 15:34:25.000000000 +0100
> +++ linux-2.6.24.2-pax/arch/x86/kernel/process_64.c 2008-02-13 11:13:14.000000000 +0100
> @@ -702,7 +701,7 @@
> */
> asmlinkage
> long sys_execve(char __user *name, char __user * __user *argv,
> - char __user * __user *envp, struct pt_regs regs)
> + char __user * __user *envp, struct pt_regs *regs)
> {
> long error;
> char * filename;
> @@ -711,7 +710,7 @@
> error = PTR_ERR(filename);
> if (IS_ERR(filename))
> return error;
> - error = do_execve(filename, argv, envp, &regs);
> + error = do_execve(filename, argv, envp, regs);
> if (error == 0) {
> task_lock(current);
> current->ptrace &= ~PT_DTRACE;
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/