On 09/30, Andrey Ryabinin wrote:
>
> @@ -423,7 +424,9 @@ static int coredump_wait(int exit_code, struct core_state 
> *core_state)
>       if (core_waiters > 0) {
>               struct core_thread *ptr;
>  
> +             freezer_do_not_count();
>               wait_for_completion(&core_state->startup);
> +             freezer_count();

Agreed... we could probably even do

        --- x/fs/coredump.c
        +++ x/fs/coredump.c
        @@ -423,7 +423,13 @@ static int coredump_wait(int exit_code, 
                if (core_waiters > 0) {
                        struct core_thread *ptr;
         
        -               wait_for_completion(&core_state->startup);
        +               if 
(wait_for_completion_interruptible(&core_state->startup)) {
        +                       /* see the comment in dump_interrupted() */
        +                       down_write(&mm->mmap_sem);
        +                       coredump_finish(mm, false);
        +                       up_write(&mm->mmap_sem);
        +                       return -EINTR;
        +               }
                        /*
                         * Wait for all the threads to become inactive, so that
                         * all the thread context (extended register state, like

but this change looks fine to me too.

Acked-by: Oleg Nesterov <o...@redhat.com>

Reply via email to