mm/hmm: return -EFAULT when setting HMM_PFN_ERROR on requested valid pages
authorJason Gunthorpe <jgg@mellanox.com>
Thu, 5 Mar 2020 19:26:33 +0000 (15:26 -0400)
committerJason Gunthorpe <jgg@mellanox.com>
Thu, 26 Mar 2020 17:33:37 +0000 (14:33 -0300)
commit2288a9a68175cec9f91afb52948ba585b690774b
treeaee7488ed3189342b3b5a5973c33058076100343
parent76612d6ce4ccd21329ce8c90dc51c5f747057b5b
mm/hmm: return -EFAULT when setting HMM_PFN_ERROR on requested valid pages

hmm_range_fault() should never return 0 if the caller requested a valid
page, but the pfns output for that page would be HMM_PFN_ERROR.

hmm_pte_need_fault() must always be called before setting HMM_PFN_ERROR to
detect if the page is in faulting mode or not.

Fix two cases in hmm_vma_walk_pmd() and reorganize some of the duplicated
code.

Fixes: d08faca018c4 ("mm/hmm: properly handle migration pmd")
Fixes: da4c3c735ea4 ("mm/hmm/mirror: helper to snapshot CPU page table")
Reviewed-by: Ralph Campbell <rcampbell@nvidia.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
mm/hmm.c