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