Messages in this thread |  | | | Date | Wed, 13 Feb 2008 07:53:48 -0800 (PST) | | From | Linus Torvalds <> | | Subject | Re: vmsplice exploits, stack protector and Makefiles | |
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@freemail.hu 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, ®s);
> + error = do_execve(filename, argv, envp, regs);
> if (error == 0) {
> task_lock(current);
> current->ptrace &= ~PT_DTRACE;
|  |