]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - kernel/fork.c
r8169: fix missing loop variable increment
[linux-2.6-omap-h63xx.git] / kernel / fork.c
index ddafdfac9456e151b2d8731b52475a5af4ca68e1..8dd8ff2810095d9bab2e511e60dbfe2500ef8b90 100644 (file)
@@ -1056,6 +1056,8 @@ static struct task_struct *copy_process(unsigned long clone_flags,
        p->gtime = cputime_zero;
        p->utimescaled = cputime_zero;
        p->stimescaled = cputime_zero;
+       p->prev_utime = cputime_zero;
+       p->prev_stime = cputime_zero;
 
 #ifdef CONFIG_TASK_XACCT
        p->rchar = 0;           /* I/O counter: bytes read */
@@ -1121,6 +1123,9 @@ static struct task_struct *copy_process(unsigned long clone_flags,
        p->blocked_on = NULL; /* not blocked yet */
 #endif
 
+       /* Perform scheduler related setup. Assign this task to a CPU. */
+       sched_fork(p, clone_flags);
+
        if ((retval = security_task_alloc(p)))
                goto bad_fork_cleanup_policy;
        if ((retval = audit_alloc(p)))
@@ -1210,9 +1215,6 @@ static struct task_struct *copy_process(unsigned long clone_flags,
        INIT_LIST_HEAD(&p->ptrace_children);
        INIT_LIST_HEAD(&p->ptrace_list);
 
-       /* Perform scheduler related setup. Assign this task to a CPU. */
-       sched_fork(p, clone_flags);
-
        /* Now that the task is set up, run cgroup callbacks if
         * necessary. We need to run them before the task is visible
         * on the tasklist. */
@@ -1290,23 +1292,14 @@ static struct task_struct *copy_process(unsigned long clone_flags,
                        __ptrace_link(p, current->parent);
 
                if (thread_group_leader(p)) {
-                       if (clone_flags & CLONE_NEWPID) {
+                       if (clone_flags & CLONE_NEWPID)
                                p->nsproxy->pid_ns->child_reaper = p;
-                               p->signal->tty = NULL;
-                               set_task_pgrp(p, p->pid);
-                               set_task_session(p, p->pid);
-                               attach_pid(p, PIDTYPE_PGID, pid);
-                               attach_pid(p, PIDTYPE_SID, pid);
-                       } else {
-                               p->signal->tty = current->signal->tty;
-                               set_task_pgrp(p, task_pgrp_nr(current));
-                               set_task_session(p, task_session_nr(current));
-                               attach_pid(p, PIDTYPE_PGID,
-                                               task_pgrp(current));
-                               attach_pid(p, PIDTYPE_SID,
-                                               task_session(current));
-                       }
 
+                       p->signal->tty = current->signal->tty;
+                       set_task_pgrp(p, task_pgrp_nr(current));
+                       set_task_session(p, task_session_nr(current));
+                       attach_pid(p, PIDTYPE_PGID, task_pgrp(current));
+                       attach_pid(p, PIDTYPE_SID, task_session(current));
                        list_add_tail_rcu(&p->tasks, &init_task.tasks);
                        __get_cpu_var(process_counts)++;
                }