Message ID | 20201119144146.1045202-1-daniel.vetter@ffwll.ch |
---|---|
Headers | show |
Series | follow_pfn and other iomap races | expand |
On 19/11/20 15:41, Daniel Vetter wrote: > Both Christoph Hellwig and Jason Gunthorpe suggested that usage of > follow_pfn by modules should be locked down more. To do so callers > need to be able to pass the mmu_notifier subscription corresponding > to the mm_struct to follow_pfn(). > > This patch does the rote work of doing that in the kvm subsystem. In > most places this is solved by passing struct kvm * down the call > stacks as an additional parameter, since that contains the > mmu_notifier. > > Compile tested on all affected arch. It's a bit of a pity, it's making an API more complex (the point of gfn_to_pfn_memslot vs gfn_to_pfn is exactly that you don't need a "struct kvm*" and it's clear that you've already done the lookup into that struct kvm. But it's not a big deal, and the rationale at least makes sense. So, Acked-by: Paolo Bonzini <pbonzini@redhat.com> Paolo
On Fri, Nov 20, 2020 at 4:33 PM Paolo Bonzini <pbonzini@redhat.com> wrote: > > On 19/11/20 15:41, Daniel Vetter wrote: > > Both Christoph Hellwig and Jason Gunthorpe suggested that usage of > > follow_pfn by modules should be locked down more. To do so callers > > need to be able to pass the mmu_notifier subscription corresponding > > to the mm_struct to follow_pfn(). > > > > This patch does the rote work of doing that in the kvm subsystem. In > > most places this is solved by passing struct kvm * down the call > > stacks as an additional parameter, since that contains the > > mmu_notifier. > > > > Compile tested on all affected arch. > > It's a bit of a pity, it's making an API more complex (the point of > gfn_to_pfn_memslot vs gfn_to_pfn is exactly that you don't need a > "struct kvm*" and it's clear that you've already done the lookup into > that struct kvm. Yeah I noticed that, I think pushing the lookups down should work, but that's a fairly large-scale change. I didn't want to do that for the RFC since it would distract from the actual change/goal. -Daniel > But it's not a big deal, and the rationale at least makes sense. So, > > Acked-by: Paolo Bonzini <pbonzini@redhat.com> > > Paolo
On 20/11/20 16:44, Daniel Vetter wrote: >> It's a bit of a pity, it's making an API more complex (the point of >> gfn_to_pfn_memslot vs gfn_to_pfn is exactly that you don't need a >> "struct kvm*" and it's clear that you've already done the lookup into >> that struct kvm. > > Yeah I noticed that, I think pushing the lookups down should work, but > that's a fairly large-scale change. I didn't want to do that for the > RFC since it would distract from the actual change/goal. > -Daniel Pushing the lookups down would be worse code and possibly introduce TOC/TOU races, so better avoid that. Your patch is fine. :) Paolo
On Thu, Nov 19, 2020 at 03:41:29PM +0100, Daniel Vetter wrote: > I feel like this is ready for some wider soaking. Since the remaining bits > are all kinda connnected probably simplest if it all goes through -mm. Did you figure out a sumbission plan for this stuff? > Daniel Vetter (17): > drm/exynos: Stop using frame_vector helpers > drm/exynos: Use FOLL_LONGTERM for g2d cmdlists > misc/habana: Stop using frame_vector helpers > misc/habana: Use FOLL_LONGTERM for userptr > mm/frame-vector: Use FOLL_LONGTERM > media: videobuf2: Move frame_vector into media subsystem At the very least it would be good to get those in right away. > mm: Add unsafe_follow_pfn > media/videbuf1|2: Mark follow_pfn usage as unsafe > vfio/type1: Mark follow_pfn as unsafe I'm surprised nobody from VFIO has remarked on this, I think thety won't like it > mm: Close race in generic_access_phys > PCI: Obey iomem restrictions for procfs mmap > /dev/mem: Only set filp->f_mapping > resource: Move devmem revoke code to resource framework > sysfs: Support zapping of binary attr mmaps > PCI: Revoke mappings like devmem This sequence seems fairly stand alone, and in good shape as well My advice is to put the done things on a branch and get Stephen to put them in linux-next. You can send a PR to Lins. There is very little mm stuff in here, and cross subsystem stuff works better in git land, IMHO. Jason