Skip to content

Commit

Permalink
cris: switch to generic kernel_execve/sys_execve
Browse files Browse the repository at this point in the history
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
  • Loading branch information
Al Viro committed Oct 15, 2012
1 parent 69b58a6 commit 1703a21
Show file tree
Hide file tree
Showing 6 changed files with 6 additions and 65 deletions.
1 change: 1 addition & 0 deletions arch/cris/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ config CRIS
select GENERIC_CMOS_UPDATE
select MODULES_USE_ELF_RELA
select GENERIC_KERNEL_THREAD
select GENERIC_KERNEL_EXECVE

config HZ
int
Expand Down
11 changes: 2 additions & 9 deletions arch/cris/arch-v10/kernel/entry.S
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,8 @@ ret_from_kernel_thread:
jsr schedule_tail
move.d $r2, $r10 ; argument is here
jsr $r1 ; call the payload
moveq 0, $r10
jsr sys_exit ; never returns
moveq 0, $r9 ; no syscall restarts, TYVM...
ba ret_from_sys_call

ret_from_intr:
;; check for resched if preemptive kernel or if we're going back to user-mode
Expand Down Expand Up @@ -594,13 +594,6 @@ _ugdb_handle_breakpoint:
ba do_sigtrap ; SIGTRAP the offending process.
pop $dccr ; Restore dccr in delay slot.

.global kernel_execve
kernel_execve:
move.d __NR_execve, $r9
break 13
ret
nop

.data

hw_bp_trigs:
Expand Down
23 changes: 0 additions & 23 deletions arch/cris/arch-v10/kernel/process.c
Original file line number Diff line number Diff line change
Expand Up @@ -167,29 +167,6 @@ asmlinkage int sys_vfork(void)
return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, rdusp(), current_pt_regs(), 0, NULL, NULL);
}

/*
* sys_execve() executes a new program.
*/
asmlinkage int sys_execve(const char *fname,
const char *const *argv,
const char *const *envp,
long r13, long mof, long srp,
struct pt_regs *regs)
{
int error;
struct filename *filename;

filename = getname(fname);
error = PTR_ERR(filename);

if (IS_ERR(filename))
goto out;
error = do_execve(filename->name, argv, envp, regs);
putname(filename);
out:
return error;
}

unsigned long get_wchan(struct task_struct *p)
{
#if 0
Expand Down
13 changes: 2 additions & 11 deletions arch/cris/arch-v32/kernel/entry.S
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,8 @@ ret_from_kernel_thread:
move.d $r2, $r10
jsr $r1
nop
moveq 0, $r10
jsr sys_exit
moveq 0, $r9 ; no syscall restarts, TYVM...
ba ret_from_sys_call
nop
.size ret_from_kernel_thread, . - ret_from_kernel_thread

Expand Down Expand Up @@ -544,15 +544,6 @@ _ugdb_handle_exception:
ba do_sigtrap ; SIGTRAP the offending process.
move.d [$sp+], $r0 ; Restore R0 in delay slot.

.global kernel_execve
.type kernel_execve,@function
kernel_execve:
move.d __NR_execve, $r9
break 13
ret
nop
.size kernel_execve, . - kernel_execve

.data

.section .rodata,"a"
Expand Down
22 changes: 0 additions & 22 deletions arch/cris/arch-v32/kernel/process.c
Original file line number Diff line number Diff line change
Expand Up @@ -186,28 +186,6 @@ sys_vfork(void)
return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, rdusp(), current_pt_regs(), 0, NULL, NULL);
}

/* sys_execve() executes a new program. */
asmlinkage int
sys_execve(const char *fname,
const char *const *argv,
const char *const *envp, long r13, long mof, long srp,
struct pt_regs *regs)
{
int error;
struct filename *filename;

filename = getname(fname);
error = PTR_ERR(filename);

if (IS_ERR(filename))
goto out;

error = do_execve(filename->name, argv, envp, regs);
putname(filename);
out:
return error;
}

unsigned long
get_wchan(struct task_struct *p)
{
Expand Down
1 change: 1 addition & 0 deletions arch/cris/include/asm/unistd.h
Original file line number Diff line number Diff line change
Expand Up @@ -371,6 +371,7 @@
#define __ARCH_WANT_SYS_SIGPROCMASK
#define __ARCH_WANT_SYS_RT_SIGACTION
#define __ARCH_WANT_SYS_RT_SIGSUSPEND
#define __ARCH_WANT_SYS_EXECVE

/*
* "Conditional" syscalls
Expand Down

0 comments on commit 1703a21

Please sign in to comment.