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 <[email protected]>
> Signed-off-by: Miaohe Lin <[email protected]>

Anyway, LGTM:

Reviewed-by: Oscar Salvador <[email protected]>

-- 
Oscar Salvador
SUSE L3

Reply via email to