diff options
author | David S. Miller <davem@davemloft.net> | 2010-09-09 02:49:04 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-09-09 02:49:04 -0400 |
commit | e199e6136ce6b151e6638ae93dca60748424d900 (patch) | |
tree | 0d66e0b5d227c36b005e4f5537f4bbcfc6ed4904 /arch/um/kernel | |
parent | 972c40b5bee429c84ba727f8ac0a08292bc5dc3d (diff) | |
parent | d56557af19867edb8c0e96f8e26399698a08857f (diff) |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6
Diffstat (limited to 'arch/um/kernel')
-rw-r--r-- | arch/um/kernel/exec.c | 9 | ||||
-rw-r--r-- | arch/um/kernel/internal.h | 2 | ||||
-rw-r--r-- | arch/um/kernel/ksyms.c | 3 | ||||
-rw-r--r-- | arch/um/kernel/ptrace.c | 21 | ||||
-rw-r--r-- | arch/um/kernel/syscall.c | 6 | ||||
-rw-r--r-- | arch/um/kernel/time.c | 16 |
6 files changed, 21 insertions, 36 deletions
diff --git a/arch/um/kernel/exec.c b/arch/um/kernel/exec.c index 97974c1bdd12..cd145eda3579 100644 --- a/arch/um/kernel/exec.c +++ b/arch/um/kernel/exec.c | |||
@@ -44,8 +44,9 @@ void start_thread(struct pt_regs *regs, unsigned long eip, unsigned long esp) | |||
44 | PT_REGS_SP(regs) = esp; | 44 | PT_REGS_SP(regs) = esp; |
45 | } | 45 | } |
46 | 46 | ||
47 | static long execve1(char *file, char __user * __user *argv, | 47 | static long execve1(const char *file, |
48 | char __user *__user *env) | 48 | const char __user *const __user *argv, |
49 | const char __user *const __user *env) | ||
49 | { | 50 | { |
50 | long error; | 51 | long error; |
51 | 52 | ||
@@ -61,7 +62,7 @@ static long execve1(char *file, char __user * __user *argv, | |||
61 | return error; | 62 | return error; |
62 | } | 63 | } |
63 | 64 | ||
64 | long um_execve(char *file, char __user *__user *argv, char __user *__user *env) | 65 | long um_execve(const char *file, char __user *__user *argv, char __user *__user *env) |
65 | { | 66 | { |
66 | long err; | 67 | long err; |
67 | 68 | ||
@@ -71,7 +72,7 @@ long um_execve(char *file, char __user *__user *argv, char __user *__user *env) | |||
71 | return err; | 72 | return err; |
72 | } | 73 | } |
73 | 74 | ||
74 | long sys_execve(char __user *file, char __user *__user *argv, | 75 | long sys_execve(const char __user *file, char __user *__user *argv, |
75 | char __user *__user *env) | 76 | char __user *__user *env) |
76 | { | 77 | { |
77 | long error; | 78 | long error; |
diff --git a/arch/um/kernel/internal.h b/arch/um/kernel/internal.h index 3bda43c7a786..1303a105fe91 100644 --- a/arch/um/kernel/internal.h +++ b/arch/um/kernel/internal.h | |||
@@ -1 +1 @@ | |||
extern long um_execve(char *file, char __user *__user *argv, char __user *__user *env); | extern long um_execve(const char *file, char __user *__user *argv, char __user *__user *env); | ||
diff --git a/arch/um/kernel/ksyms.c b/arch/um/kernel/ksyms.c index 836fc9b94707..0ae0dfcfbffb 100644 --- a/arch/um/kernel/ksyms.c +++ b/arch/um/kernel/ksyms.c | |||
@@ -58,6 +58,9 @@ EXPORT_SYMBOL(os_accept_connection); | |||
58 | EXPORT_SYMBOL(os_rcv_fd); | 58 | EXPORT_SYMBOL(os_rcv_fd); |
59 | EXPORT_SYMBOL(run_helper); | 59 | EXPORT_SYMBOL(run_helper); |
60 | EXPORT_SYMBOL(start_thread); | 60 | EXPORT_SYMBOL(start_thread); |
61 | EXPORT_SYMBOL(os_major); | ||
62 | EXPORT_SYMBOL(os_minor); | ||
63 | EXPORT_SYMBOL(os_makedev); | ||
61 | 64 | ||
62 | EXPORT_SYMBOL(add_sigio_fd); | 65 | EXPORT_SYMBOL(add_sigio_fd); |
63 | EXPORT_SYMBOL(ignore_sigio_fd); | 66 | EXPORT_SYMBOL(ignore_sigio_fd); |
diff --git a/arch/um/kernel/ptrace.c b/arch/um/kernel/ptrace.c index 484509948ee9..e0510496596c 100644 --- a/arch/um/kernel/ptrace.c +++ b/arch/um/kernel/ptrace.c | |||
@@ -7,9 +7,6 @@ | |||
7 | #include "linux/ptrace.h" | 7 | #include "linux/ptrace.h" |
8 | #include "linux/sched.h" | 8 | #include "linux/sched.h" |
9 | #include "asm/uaccess.h" | 9 | #include "asm/uaccess.h" |
10 | #ifdef CONFIG_PROC_MM | ||
11 | #include "proc_mm.h" | ||
12 | #endif | ||
13 | #include "skas_ptrace.h" | 10 | #include "skas_ptrace.h" |
14 | 11 | ||
15 | 12 | ||
@@ -158,24 +155,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
158 | break; | 155 | break; |
159 | } | 156 | } |
160 | #endif | 157 | #endif |
161 | #ifdef CONFIG_PROC_MM | ||
162 | case PTRACE_SWITCH_MM: { | ||
163 | struct mm_struct *old = child->mm; | ||
164 | struct mm_struct *new = proc_mm_get_mm(data); | ||
165 | |||
166 | if (IS_ERR(new)) { | ||
167 | ret = PTR_ERR(new); | ||
168 | break; | ||
169 | } | ||
170 | |||
171 | atomic_inc(&new->mm_users); | ||
172 | child->mm = new; | ||
173 | child->active_mm = new; | ||
174 | mmput(old); | ||
175 | ret = 0; | ||
176 | break; | ||
177 | } | ||
178 | #endif | ||
179 | #ifdef PTRACE_ARCH_PRCTL | 158 | #ifdef PTRACE_ARCH_PRCTL |
180 | case PTRACE_ARCH_PRCTL: | 159 | case PTRACE_ARCH_PRCTL: |
181 | /* XXX Calls ptrace on the host - needs some SMP thinking */ | 160 | /* XXX Calls ptrace on the host - needs some SMP thinking */ |
diff --git a/arch/um/kernel/syscall.c b/arch/um/kernel/syscall.c index 4393173923f5..5ddb246626db 100644 --- a/arch/um/kernel/syscall.c +++ b/arch/um/kernel/syscall.c | |||
@@ -51,14 +51,16 @@ long old_mmap(unsigned long addr, unsigned long len, | |||
51 | return err; | 51 | return err; |
52 | } | 52 | } |
53 | 53 | ||
54 | int kernel_execve(const char *filename, char *const argv[], char *const envp[]) | 54 | int kernel_execve(const char *filename, |
55 | const char *const argv[], | ||
56 | const char *const envp[]) | ||
55 | { | 57 | { |
56 | mm_segment_t fs; | 58 | mm_segment_t fs; |
57 | int ret; | 59 | int ret; |
58 | 60 | ||
59 | fs = get_fs(); | 61 | fs = get_fs(); |
60 | set_fs(KERNEL_DS); | 62 | set_fs(KERNEL_DS); |
61 | ret = um_execve((char *)filename, (char __user *__user *)argv, | 63 | ret = um_execve(filename, (char __user *__user *)argv, |
62 | (char __user *__user *) envp); | 64 | (char __user *__user *) envp); |
63 | set_fs(fs); | 65 | set_fs(fs); |
64 | 66 | ||
diff --git a/arch/um/kernel/time.c b/arch/um/kernel/time.c index c8b9c469fcd7..a08d9fab81f2 100644 --- a/arch/um/kernel/time.c +++ b/arch/um/kernel/time.c | |||
@@ -102,16 +102,16 @@ static void __init setup_itimer(void) | |||
102 | clockevents_register_device(&itimer_clockevent); | 102 | clockevents_register_device(&itimer_clockevent); |
103 | } | 103 | } |
104 | 104 | ||
105 | void __init time_init(void) | 105 | void read_persistent_clock(struct timespec *ts) |
106 | { | 106 | { |
107 | long long nsecs; | 107 | long long nsecs = os_nsecs(); |
108 | |||
109 | timer_init(); | ||
110 | 108 | ||
111 | nsecs = os_nsecs(); | 109 | set_normalized_timespec(ts, nsecs / NSEC_PER_SEC, |
112 | set_normalized_timespec(&wall_to_monotonic, -nsecs / NSEC_PER_SEC, | ||
113 | -nsecs % NSEC_PER_SEC); | ||
114 | set_normalized_timespec(&xtime, nsecs / NSEC_PER_SEC, | ||
115 | nsecs % NSEC_PER_SEC); | 110 | nsecs % NSEC_PER_SEC); |
111 | } | ||
112 | |||
113 | void __init time_init(void) | ||
114 | { | ||
115 | timer_init(); | ||
116 | late_time_init = setup_itimer; | 116 | late_time_init = setup_itimer; |
117 | } | 117 | } |