Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 332982
b: refs/heads/master
c: 44f4b56
h: refs/heads/master
v: v3
  • Loading branch information
Al Viro committed Oct 1, 2012
1 parent 5ee6249 commit 0ab9b95
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 20 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: cba1ec7e88a0257eb13e84d170a93cd52b702562
refs/heads/master: 44f4b56b54d2ab5d06c1726f2cde8ca15c8fac47
1 change: 1 addition & 0 deletions trunk/arch/alpha/include/asm/unistd.h
Original file line number Diff line number Diff line change
Expand Up @@ -482,6 +482,7 @@
#define __ARCH_WANT_SYS_SIGPENDING
#define __ARCH_WANT_SYS_RT_SIGSUSPEND
#define __ARCH_WANT_SYS_EXECVE
#define __ARCH_WANT_KERNEL_EXECVE

/* "Conditional" syscalls. What we want is
Expand Down
13 changes: 13 additions & 0 deletions trunk/arch/alpha/kernel/entry.S
Original file line number Diff line number Diff line change
Expand Up @@ -626,6 +626,19 @@ ret_from_kernel_thread:
jmp $31, sys_exit
.end ret_from_kernel_thread

.globl ret_from_kernel_execve
.align 4
.ent ret_from_kernel_execve
ret_from_kernel_execve:
mov $16, $sp
/* Avoid the HAE being gratuitously wrong, to avoid restoring it. */
ldq $2, alpha_mv+HAE_CACHE
stq $2, 152($sp) /* HAE */
mov $31, $19 /* to disable syscall restarts */
br $31, ret_to_user

.end ret_from_kernel_execve


/*
* Special system calls. Most of these are special in that they either
Expand Down
19 changes: 0 additions & 19 deletions trunk/arch/alpha/kernel/process.c
Original file line number Diff line number Diff line change
Expand Up @@ -435,22 +435,3 @@ get_wchan(struct task_struct *p)
}
return pc;
}

int kernel_execve(const char *path, const char *const argv[], const char *const envp[])
{
/* Avoid the HAE being gratuitously wrong, which would cause us
to do the whole turn off interrupts thing and restore it. */
struct pt_regs regs = {.hae = alpha_mv.hae_cache};
int err = do_execve(path, argv, envp, &regs);
if (!err) {
struct pt_regs *p = current_pt_regs();
/* copy regs to normal position and off to userland we go... */
*p = regs;
__asm__ __volatile__ (
"mov %0, $sp;"
"br $31, ret_from_sys_call"
: : "r"(p));
}
return err;
}
EXPORT_SYMBOL(kernel_execve);

0 comments on commit 0ab9b95

Please sign in to comment.