Re: fs: uninterruptible hang in handle_userfault

From: Al Viro
Date: Tue Mar 01 2016 - 15:00:11 EST


On Tue, Mar 01, 2016 at 11:56:22AM -0800, Linus Torvalds wrote:
> (a) special-case the PF_EXITING case for usefaultfd, something like
>
> diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c
> index 50311703135b..66cdb44616d5 100644
> --- a/fs/userfaultfd.c
> +++ b/fs/userfaultfd.c
> @@ -287,6 +287,12 @@ int handle_userfault(struct vm_area_struct
> *vma, unsigned long address,
> goto out;
>
> /*
> + * We don't do userfault handling for the final child pid update.
> + */
> + if (current->flags & PF_EXITING)
> + goto out;

Umm... Probably a dumb question, but would that suffice when e.g. another
thread is just starting to dump core?