Cc all the mailing lists ... my usual script crashed and I had to hand-roll the email and screwed it up ofc :-/ -Daniel
On Mon, Feb 22, 2021 at 11:23 AM Daniel Vetter daniel@ffwll.ch wrote:
Hi Linus,
Another small pull from you to ponder.
This is the first part of a patch series I've been working on for a while:
https://lore.kernel.org/dri-devel/20201127164131.2244124-1-daniel.vetter@ffw...
I've stumbled over this for my own learning and then realized there's a bunch of races around VM_PFNMAP mappings vs follow pfn.
If you're happy with this then I'll follow up with the media patches to mark their leftover use of follow_pfn as unsafe (it's uapi, so unfixable issue, all we can do is a config option to harden the kernel). Plus hopefully kvm and vfio are then fixed too (you've been on the recent kvm thread where this popped up again) so that we can sunset follow_pfn usage completely.
The last two patches have only been in linux-next in their current form for a week, there was some issue for platforms with HAVE_PCI_LEGACY (not that many) which took some sorting out. But looks all good now.
Cheers, Daniel
The following changes since commit 7c53f6b671f4aba70ff15e1b05148b10d58c2837:
Linux 5.11-rc3 (2021-01-10 14:34:50 -0800)
are available in the Git repository at:
git://anongit.freedesktop.org/drm/drm tags/topic/iomem-mmap-vs-gup-2021-02-22
for you to fetch changes up to 636b21b50152d4e203223ee337aca1cb3c1bfe53:
PCI: Revoke mappings like devmem (2021-02-11 15:59:19 +0100)
Fixes around VM_FPNMAP and follow_pfn
- replace mm/frame_vector.c by get_user_pages in misc/habana and drm/exynos drivers, then move that into media as it's sole user
- close race in generic_access_phys
- s390 pci ioctl fix of this series landed in 5.11 already
- properly revoke iomem mappings (/dev/mem, pci files)
Daniel Vetter (13): 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 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: Also set up legacy files only after sysfs init PCI: Revoke mappings like devmem
drivers/char/mem.c | 86 +---------------------------------------------------------------- drivers/gpu/drm/exynos/Kconfig | 1 - drivers/gpu/drm/exynos/exynos_drm_g2d.c | 48 ++++++++++++++++--------------------- drivers/media/common/videobuf2/Kconfig | 1 - drivers/media/common/videobuf2/Makefile | 1 + {mm => drivers/media/common/videobuf2}/frame_vector.c | 55 +++++++++++++++--------------------------- drivers/media/common/videobuf2/videobuf2-memops.c | 3 +-- drivers/media/platform/omap/Kconfig | 1 - drivers/misc/habanalabs/Kconfig | 1 - drivers/misc/habanalabs/common/habanalabs.h | 6 +++-- drivers/misc/habanalabs/common/memory.c | 52 +++++++++++++++------------------------- drivers/pci/pci-sysfs.c | 11 +++++++++ drivers/pci/proc.c | 6 +++++ fs/sysfs/file.c | 11 +++++++++ include/linux/ioport.h | 6 +---- include/linux/mm.h | 45 ++-------------------------------- include/linux/sysfs.h | 2 ++ include/media/frame_vector.h | 47 ++++++++++++++++++++++++++++++++++++ include/media/videobuf2-core.h | 1 + kernel/resource.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- mm/Kconfig | 3 --- mm/Makefile | 1 - mm/memory.c | 46 ++++++++++++++++++++++++++++++++--- 23 files changed, 287 insertions(+), 245 deletions(-) rename {mm => drivers/media/common/videobuf2}/frame_vector.c (85%) create mode 100644 include/media/frame_vector.h -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch