]> Pileus Git - ~andy/linux/blobdiff - kernel/fork.c
[PARISC] Add some defines for HugeTLB pages
[~andy/linux] / kernel / fork.c
index 4bc0bd8ef1761d07a425994bbdbf857b75f32fc3..3bdcab49998d2dd43bf951ae87a855e955eaf090 100644 (file)
@@ -801,10 +801,10 @@ static inline int copy_signal(unsigned long clone_flags, struct task_struct * ts
        init_sigpending(&sig->shared_pending);
        INIT_LIST_HEAD(&sig->posix_timers);
 
-       sig->it_real_value = sig->it_real_incr = 0;
+       hrtimer_init(&sig->real_timer, CLOCK_MONOTONIC);
+       sig->it_real_incr.tv64 = 0;
        sig->real_timer.function = it_real_fn;
-       sig->real_timer.data = (unsigned long) tsk;
-       init_timer(&sig->real_timer);
+       sig->real_timer.data = tsk;
 
        sig->it_virt_expires = cputime_zero;
        sig->it_virt_incr = cputime_zero;
@@ -979,6 +979,10 @@ static task_t *copy_process(unsigned long clone_flags,
        }
 #endif
 
+#ifdef CONFIG_DEBUG_MUTEXES
+       p->blocked_on = NULL; /* not blocked yet */
+#endif
+
        p->tgid = p->pid;
        if (clone_flags & CLONE_THREAD)
                p->tgid = current->tgid;
@@ -1146,11 +1150,6 @@ static task_t *copy_process(unsigned long clone_flags,
        total_forks++;
        write_unlock_irq(&tasklist_lock);
        proc_fork_connector(p);
-       retval = 0;
-
-fork_out:
-       if (retval)
-               return ERR_PTR(retval);
        return p;
 
 bad_fork_cleanup_namespace:
@@ -1191,7 +1190,8 @@ bad_fork_cleanup_count:
        free_uid(p->user);
 bad_fork_free:
        free_task(p);
-       goto fork_out;
+fork_out:
+       return ERR_PTR(retval);
 }
 
 struct pt_regs * __devinit __attribute__((weak)) idle_regs(struct pt_regs *regs)