On 1/24/23 10:30 PM, Peter Xu wrote: > On Mon, Jan 23, 2023 at 05:18:13PM +0500, Muhammad Usama Anjum wrote: >>>> + if (IS_GET_OP(p) && p->max_pages && (p->found_pages == p->max_pages)) >>>> + return -ENOSPC; >>> >>> This is the function to test "whether the walker should walk the vma >>> specified". This check should IIUC be meaningless because found_pages >>> doesn't boost during vma switching, while OTOH your pmd walker fn should do >>> proper check when increasing found_pages and return -ENOSPC properly when >>> the same condition met. That should be enough, IMHO. >> This check is needed in case we want to abort the walk at once. We return >> negative value from here which aborts the walk. Returning negative value >> from pmd_entry doesn't abort the walk. So this check is needed in the >> test_walk. > > Why? What I see locally is (walk_pmd_range): > > if (ops->pmd_entry) > err = ops->pmd_entry(pmd, addr, next, walk); > if (err) > break; Sorry, mistake on my part. I'll correct it in next version (v9). > > Thanks, > -- BR, Muhammad Usama Anjum