On Mon, Oct 19, 2020 at 03:48:53AM -0400, Shijie Luo wrote: > When flags in queue_pages_pte_range don't have MPOL_MF_MOVE or MPOL_MF_MOVE_ALL > bits, code breaks and passing origin pte - 1 to pte_unmap_unlock seems like > not a good idea. I think the above is already explained below? > 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 > commit 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") > > Signed-off-by: Shijie Luo <luoshijie1@xxxxxxxxxx> > Signed-off-by: Miaohe Lin <linmiaohe@xxxxxxxxxx> Anyway, LGTM: Reviewed-by: Oscar Salvador <osalvador@xxxxxxx> -- Oscar Salvador SUSE L3