The patch titled Subject: mm-memcg-fix-reclaim-deadlock-with-writeback-fix has been added to the -mm tree. Its filename is mm-memcg-fix-reclaim-deadlock-with-writeback-fix.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/mm-memcg-fix-reclaim-deadlock-with-writeback-fix.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/mm-memcg-fix-reclaim-deadlock-with-writeback-fix.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Michal Hocko <mhocko@xxxxxxxxxx> Subject: mm-memcg-fix-reclaim-deadlock-with-writeback-fix enhance comment, per Johannes Link: http://lkml.kernel.org/r/20181214084948.GA5624@xxxxxxxxxxxxxx Cc: Liu Bo <bo.liu@xxxxxxxxxxxxxxxxx> Cc: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx> Cc: Johannes Weiner <hannes@xxxxxxxxxxx> Cc: Jan Kara <jack@xxxxxxx> Cc: Dave Chinner <david@xxxxxxxxxxxxx> Cc: Theodore Ts'o <tytso@xxxxxxx> Cc: Vladimir Davydov <vdavydov.dev@xxxxxxxxx> Cc: Shakeel Butt <shakeelb@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/memory.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) --- a/mm/memory.c~mm-memcg-fix-reclaim-deadlock-with-writeback-fix +++ a/mm/memory.c @@ -2996,7 +2996,18 @@ static vm_fault_t __do_fault(struct vm_f /* * Preallocate pte before we take page_lock because this might lead to - * deadlocks for memcg reclaim which waits for pages under writeback. + * deadlocks for memcg reclaim which waits for pages under writeback: + * lock_page(A) + * SetPageWriteback(A) + * unlock_page(A) + * lock_page(B) + * lock_page(B) + * pte_alloc_pne + * shrink_page_list + * wait_on_page_writeback(A) + * SetPageWriteback(B) + * unlock_page(B) + * # flush A, B to clear the writeback */ if (pmd_none(*vmf->pmd) && !vmf->prealloc_pte) { vmf->prealloc_pte = pte_alloc_one(vmf->vma->vm_mm, vmf->address); _ Patches currently in -mm which might be from mhocko@xxxxxxxxxx are mm-memcg-fix-reclaim-deadlock-with-writeback-fix.patch