On 11/12/19 12:43 PM, Jason Gunthorpe wrote: ...
}
- ret = get_user_pages_remote(NULL, mm, vaddr, 1, flags | FOLL_LONGTERM,
page, vmas, NULL);
- /*
* The lifetime of a vaddr_get_pfn() page pin is
* userspace-controlled. In the fs-dax case this could
* lead to indefinite stalls in filesystem operations.
* Disallow attempts to pin fs-dax pages via this
* interface.
*/
- if (ret > 0 && vma_is_fsdax(vmas[0])) {
ret = -EOPNOTSUPP;
}put_page(page[0]);
AFAIK this chunk is redundant now as it is some hack to emulate FOLL_LONGTERM? So vmas can be deleted too.
Let me first make sure I understand what Dan has in mind for the vma checking, in the other thread...
Also unclear why this function has this:
up_read(&mm->mmap_sem); if (ret == 1) { *pfn = page_to_pfn(page[0]); return 0; } down_read(&mm->mmap_sem);
Yes, that's really odd. It's not good to release and retake the lock anyway in general (without re-checking things), and certainly it is not required to release mmap_sem in order to call page_to_pfn().
I've removed that up_read()/down_read() pair, for v4.
thanks,