On Tue, Mar 24, 2020 at 08:37:46AM +0100, Christoph Hellwig wrote:
On Mon, Mar 23, 2020 at 10:14:55PM -0300, Jason Gunthorpe wrote:
if (pte_none(pte)) { required_fault = hmm_pte_need_fault(hmm_vma_walk, orig_pfn, 0); if (required_fault) goto fault;
return 0; }*pfn = range->values[HMM_PFN_NONE];
@@ -274,8 +274,10 @@ static int hmm_vma_handle_pte(struct mm_walk *walk, unsigned long addr, }
required_fault = hmm_pte_need_fault(hmm_vma_walk, orig_pfn, 0);
if (!required_fault)
if (!required_fault) {
*pfn = range->values[HMM_PFN_NONE]; return 0;
}
Maybe throw in a goto hole to consolidaste the set PFN and return 0 cases?
Then we have goto fault and goto none both ending in returns. I generally prefer the goto labels to have a single return
The pte_unmap() before faulting makes this routine twisty and I haven't thought of a good way to untwist it
Thanks, Jason
dri-devel@lists.freedesktop.org