- if (!(clone_flags & CLONE_STOPPED)) {
- /*
- * Do the wakeup last. On SMP we treat fork() and
- * CLONE_VM separately, because fork() has already
- * created cache footprint on this CPU (due to
- * copying the pagetables), hence migration would
- * probably be costy. Threads on the other hand
- * have less traction to the current CPU, and if
- * there's an imbalance then the scheduler can
- * migrate this fresh thread now, before it
- * accumulates a larger cache footprint:
- */
- if (clone_flags & CLONE_VM)
- wake_up_forked_thread(p);
- else
- wake_up_forked_process(p);
- } else {
- int cpu = get_cpu();
-
+ if (!(clone_flags & CLONE_STOPPED))
+ wake_up_new_task(p, clone_flags);
+ else