On Wed, Oct 21, 2020 at 05:54:54PM +0200, Daniel Vetter wrote:
The trouble is that io_remap_pfn adjust vma->pgoff, so we'd need to split that. So ideally ->mmap would never set up any ptes.
/dev/mem makes pgoff == pfn so it doesn't get changed by remap.
pgoff doesn't get touched for MAP_SHARED either, so there are other users that could work like this - eg anyone mmaping IO memory is probably OK.
I guess one option would be if remap_pfn_range would steal the vma->vm_ops pointer for itself, then it could set up the correct ->install_ptes hook. But there's tons of callers for that, so not sure that's a bright idea.
The caller has to check that the mapping is still live, and I think hold a lock across the remap? Auto-defering it doesn't seem feasible.
Jason