On Fri 16-10-20 22:11:51, Shijie Luo wrote:I will take these in my patch description and send version 3, Thanks.
When flags don't have MPOL_MF_MOVE or MPOL_MF_MOVE_ALL bits, code breaksThis would really benefit from some improvements. It is preferable to
and passing origin pte - 1 to pte_unmap_unlock seems like not a good idea.
provide a user visibile effect of the patch. I would propose this, feel
free to reuse parts as you find fit.
"
queue_pages_pte_range can run in MPOL_MF_MOVE_ALL mode which doesn't
migrate misplaced pages but returns with EIO when encountering such a
page. Since a7f40cfe3b7a ("mm: mempolicy: make mbind() return -EIO when
MPOL_MF_STRICT is specified") and early break on the first pte in the
range results in pte_unmap_unlock on an underflow pte. This can lead to
lockups later on when somebody tries to lock the pte resp.
page_table_lock again..
Fixes: a7f40cfe3b7a ("mm: mempolicy: make mbind() return -EIO when
MPOL_MF_STRICT is specified")
"