On Sat, Mar 21, 2020 at 09:38:04AM -0300, Jason Gunthorpe wrote: > > I don't think there is any specific protection. Let me see if we > > can throw in a get_dev_pagemap here > > The page tables are RCU protected right? could we do something like > > if (is_device_private_entry()) { > rcu_read_lock() > if (READ_ONCE(*ptep) != pte) > return -EBUSY; > hmm_is_device_private_entry() > rcu_read_unlock() > } > > ? Are they everywhere? I'd really love to hear from people that really know this ara.. > > Then pgmap needs a synchronize_rcu before the struct page's are > destroyed (possibly gup_fast already requires this?) > > I've got some other patches trying to close some of these styles of > bugs, but > > > note that current mainline doesn't even use it for this path.. > > Don't follow? If you look at mainline (or any other tree), we only do a get_dev_pagemap for devmap ptes. But device private pages are encoded as non-present swap ptes.