On Thu 16-11-17 22:28:08, Marcos Paulo de Souza wrote:
> Thus reducing one indentation level while maintaining the same
> rationale.
> 
> Signed-off-by: Marcos Paulo de Souza <marcos.souza....@gmail.com>

looks reasonable to me
Acked-by: Michal Hocko <mho...@suse.com>

> ---
>  kernel/fork.c | 51 +++++++++++++++++++++++++--------------------------
>  1 file changed, 25 insertions(+), 26 deletions(-)
> 
> diff --git a/kernel/fork.c b/kernel/fork.c
> index 3cefe81b50f2..2113e252cb9d 100644
> --- a/kernel/fork.c
> +++ b/kernel/fork.c
> @@ -2068,6 +2068,8 @@ long _do_fork(unsigned long clone_flags,
>             int __user *child_tidptr,
>             unsigned long tls)
>  {
> +     struct completion vfork;
> +     struct pid *pid;
>       struct task_struct *p;
>       int trace = 0;
>       long nr;
> @@ -2093,43 +2095,40 @@ long _do_fork(unsigned long clone_flags,
>       p = copy_process(clone_flags, stack_start, stack_size,
>                        child_tidptr, NULL, trace, tls, NUMA_NO_NODE);
>       add_latent_entropy();
> +
> +     if (IS_ERR(p))
> +             return PTR_ERR(p);
> +
>       /*
>        * Do this prior waking up the new thread - the thread pointer
>        * might get invalid after that point, if the thread exits quickly.
>        */
> -     if (!IS_ERR(p)) {
> -             struct completion vfork;
> -             struct pid *pid;
> -
> -             trace_sched_process_fork(current, p);
> +     trace_sched_process_fork(current, p);
>  
> -             pid = get_task_pid(p, PIDTYPE_PID);
> -             nr = pid_vnr(pid);
> +     pid = get_task_pid(p, PIDTYPE_PID);
> +     nr = pid_vnr(pid);
>  
> -             if (clone_flags & CLONE_PARENT_SETTID)
> -                     put_user(nr, parent_tidptr);
> -
> -             if (clone_flags & CLONE_VFORK) {
> -                     p->vfork_done = &vfork;
> -                     init_completion(&vfork);
> -                     get_task_struct(p);
> -             }
> +     if (clone_flags & CLONE_PARENT_SETTID)
> +             put_user(nr, parent_tidptr);
>  
> -             wake_up_new_task(p);
> +     if (clone_flags & CLONE_VFORK) {
> +             p->vfork_done = &vfork;
> +             init_completion(&vfork);
> +             get_task_struct(p);
> +     }
>  
> -             /* forking complete and child started to run, tell ptracer */
> -             if (unlikely(trace))
> -                     ptrace_event_pid(trace, pid);
> +     wake_up_new_task(p);
>  
> -             if (clone_flags & CLONE_VFORK) {
> -                     if (!wait_for_vfork_done(p, &vfork))
> -                             ptrace_event_pid(PTRACE_EVENT_VFORK_DONE, pid);
> -             }
> +     /* forking complete and child started to run, tell ptracer */
> +     if (unlikely(trace))
> +             ptrace_event_pid(trace, pid);
>  
> -             put_pid(pid);
> -     } else {
> -             nr = PTR_ERR(p);
> +     if (clone_flags & CLONE_VFORK) {
> +             if (!wait_for_vfork_done(p, &vfork))
> +                     ptrace_event_pid(PTRACE_EVENT_VFORK_DONE, pid);
>       }
> +
> +     put_pid(pid);
>       return nr;
>  }
>  
> -- 
> 2.13.6
> 

-- 
Michal Hocko
SUSE Labs

Reply via email to