summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorQi Zheng <zhengqi.arch@bytedance.com>2021-07-23 15:50:41 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2021-07-23 17:43:28 -0700
commite4dc3489143f84f7ed30be58b886bb6772f229b9 (patch)
tree5a51b8b8bddd6a5b522f1acf792e62173f47669c /fs
parente904c2ccf9b5cb356eec754ffea05c08984f6535 (diff)
downloadlinux-stable-e4dc3489143f84f7ed30be58b886bb6772f229b9.tar.gz
linux-stable-e4dc3489143f84f7ed30be58b886bb6772f229b9.tar.bz2
linux-stable-e4dc3489143f84f7ed30be58b886bb6772f229b9.zip
mm: fix the deadlock in finish_fault()
Commit 63f3655f9501 ("mm, memcg: fix reclaim deadlock with writeback") fix the following ABBA deadlock by pre-allocating the pte page table without holding the page lock. lock_page(A) SetPageWriteback(A) unlock_page(A) lock_page(B) lock_page(B) pte_alloc_one shrink_page_list wait_on_page_writeback(A) SetPageWriteback(B) unlock_page(B) # flush A, B to clear the writeback Commit f9ce0be71d1f ("mm: Cleanup faultaround and finish_fault() codepaths") reworked the relevant code but ignored this race. This will cause the deadlock above to appear again, so fix it. Link: https://lkml.kernel.org/r/20210721074849.57004-1-zhengqi.arch@bytedance.com Fixes: f9ce0be71d1f ("mm: Cleanup faultaround and finish_fault() codepaths") Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com> Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Michal Hocko <mhocko@kernel.org> Cc: Vladimir Davydov <vdavydov.dev@gmail.com> Cc: Muchun Song <songmuchun@bytedance.com> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs')
0 files changed, 0 insertions, 0 deletions