Thread (4 messages) 4 messages, 2 authors, 2021-02-23

Re: [PULL] fixes around VM_PFNMAP and follow_pfn for 5.12 merge window

From: Daniel Vetter <hidden>
Date: 2021-02-22 10:27:08
Also in: dri-devel, linux-media, linux-pci, lkml

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 [off-list ref] 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@ffwll.ch/ (local)

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


-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help