Re: [linux-next: Tree for Jun 1] __khugepaged_exit rwsem_down_write_failed lockup

From: Michal Hocko
Date: Fri Jun 03 2016 - 03:25:43 EST


On Fri 03-06-16 16:15:51, Sergey Senozhatsky wrote:
> Hello,
>
> On (06/02/16 11:21), Michal Hocko wrote:
> [..]
> > @@ -2863,6 +2854,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages,
> >
> > collect_mm_slot(mm_slot);
> > }
> > + mmput(mm);
> >
> > return progress;
> > }
>
> this possibly sleeping mmput() is called from
> under the spin_lock(&khugepaged_mm_lock).

You are right. khugepaged_scan_mm_slot returns with the lock held.
mmput_async would deal with it.

> there is also a trivial build fixup needed
> (move collect_mm_slot() before __khugepaged_exit()).

will fix that. Thanks!

> it's quite hard to trigger the bug (somehow), so I can't
> follow up with more information as of now.

Thanks anyway!
--
Michal Hocko
SUSE Labs