]> err.no Git - linux-2.6/blobdiff - arch/um/kernel/process_kern.c
Automatic merge with /usr/src/ntfs-2.6.git.
[linux-2.6] / arch / um / kernel / process_kern.c
index 804c6bbdf67c157e5e28b6a9be9a76c9d8c0ce04..d4036ed680bcd408e82f1afd6871d77915792939 100644 (file)
@@ -8,6 +8,7 @@
 #include "linux/kernel.h"
 #include "linux/sched.h"
 #include "linux/interrupt.h"
+#include "linux/string.h"
 #include "linux/mm.h"
 #include "linux/slab.h"
 #include "linux/utsname.h"
@@ -95,8 +96,8 @@ int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
 
        current->thread.request.u.thread.proc = fn;
        current->thread.request.u.thread.arg = arg;
-       pid = do_fork(CLONE_VM | CLONE_UNTRACED | flags, 0, NULL, 0, NULL,
-                     NULL);
+       pid = do_fork(CLONE_VM | CLONE_UNTRACED | flags, 0,
+                     &current->thread.regs, 0, NULL, NULL);
        if(pid < 0)
                panic("do_fork failed in kernel_thread, errno = %d", pid);
        return(pid);
@@ -168,7 +169,7 @@ int current_pid(void)
 
 void default_idle(void)
 {
-       uml_idle_timer();
+       CHOOSE_MODE(uml_idle_timer(), (void) 0);
 
        atomic_inc(&init_mm.mm_count);
        current->mm = &init_mm;
@@ -322,12 +323,7 @@ void do_uml_exitcalls(void)
 
 char *uml_strdup(char *string)
 {
-       char *new;
-
-       new = kmalloc(strlen(string) + 1, GFP_KERNEL);
-       if(new == NULL) return(NULL);
-       strcpy(new, string);
-       return(new);
+       return kstrdup(string, GFP_KERNEL);
 }
 
 int copy_to_user_proc(void __user *to, void *from, int size)