lkml.org 
[lkml]   [2017]   [Sep]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Subject[RFC PATCH v8 0/2] mmap: safely enable support for new flags
    From
    Date
    Changes since v7 [1]:
    * rebase on the mid-merge-window state of the tree to pick up new mmap
    implementations.

    * expand the mmap operation handler conversion beyond 'struct
    file_operations' to include, 'struct etnaviv_gem_ops', 'struct
    dma_buf_ops', 'struct drm_driver', 'struct fb_ops', and 'struct
    v4l2_file_operations'

    * pass 'map_flags' through to all sub-handlers (Christoph)

    * rework the mmap flag validation mechanism to the MAP_SHARED_VALIDATE
    scheme (Linus)

    [1]: https://lwn.net/Articles/732886/

    ---

    In order to safely add new mmap flags we want all mmap implementations
    to both opt-in to the new flags they support and have the ability to
    reject flags on a per-mmap-call basis. An alternative to all the churn
    in patch1 is to add a new ->map_flags attribute to 'struct
    vma_area_struct', but that bloats the runtime state everywhere for the
    few mmap implementations that will care about new flags. Of course, this
    also assumes that there are no general objections to the plans to
    eventually add MAP_SYNC and/or MAP_DIRECT for DAX mappings [2].

    The current request is to merge the final version of patch1 next week,
    right before -rc1, i.e. before new ->mmap() handlers start landing in
    -next. Given that the drm, media, and sound pull requests are already
    merged only some small tweaks are expected from here on out. Patch2 is
    included for review, but it can wait and go in with the new MAP_ flags.

    Please holler if anything does not look right.

    [2]: "Two more approaches to persistent-memory writes"
    https://lwn.net/Articles/731706/

    ---

    Dan Williams (2):
    vfs: add flags parameter to all ->mmap() handlers
    mm: introduce MAP_SHARED_VALIDATE, a mechanism to safely define new mmap flags


    arch/alpha/include/uapi/asm/mman.h | 1
    arch/arc/kernel/arc_hostlink.c | 3 +
    arch/mips/include/uapi/asm/mman.h | 1
    arch/mips/kernel/vdso.c | 2 -
    arch/parisc/include/uapi/asm/mman.h | 1
    arch/powerpc/kernel/proc_powerpc.c | 3 +
    arch/powerpc/kvm/book3s_64_vio.c | 3 +
    arch/powerpc/platforms/cell/spufs/file.c | 21 ++++++----
    arch/powerpc/platforms/powernv/memtrace.c | 3 +
    arch/powerpc/platforms/powernv/opal-prd.c | 3 +
    arch/tile/mm/elf.c | 3 +
    arch/um/drivers/mmapper_kern.c | 3 +
    arch/xtensa/include/uapi/asm/mman.h | 1
    drivers/android/binder.c | 3 +
    drivers/auxdisplay/cfag12864bfb.c | 3 +
    drivers/auxdisplay/ht16k33.c | 3 +
    drivers/char/agp/frontend.c | 3 +
    drivers/char/bsr.c | 3 +
    drivers/char/hpet.c | 6 ++-
    drivers/char/mbcs.c | 3 +
    drivers/char/mbcs.h | 3 +
    drivers/char/mem.c | 11 +++--
    drivers/char/mspec.c | 9 +++-
    drivers/char/uv_mmtimer.c | 6 ++-
    drivers/dax/device.c | 3 +
    drivers/dma-buf/dma-buf.c | 11 +++--
    drivers/firewire/core-cdev.c | 3 +
    drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 3 +
    drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h | 3 +
    drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 5 +-
    drivers/gpu/drm/armada/armada_gem.c | 3 +
    drivers/gpu/drm/ast/ast_drv.h | 3 +
    drivers/gpu/drm/ast/ast_ttm.c | 3 +
    drivers/gpu/drm/bochs/bochs.h | 3 +
    drivers/gpu/drm/bochs/bochs_fbdev.c | 2 -
    drivers/gpu/drm/bochs/bochs_mm.c | 3 +
    drivers/gpu/drm/cirrus/cirrus_drv.h | 3 +
    drivers/gpu/drm/cirrus/cirrus_ttm.c | 3 +
    drivers/gpu/drm/drm_fb_cma_helper.c | 8 ++--
    drivers/gpu/drm/drm_gem.c | 3 +
    drivers/gpu/drm/drm_gem_cma_helper.c | 8 ++--
    drivers/gpu/drm/drm_prime.c | 5 +-
    drivers/gpu/drm/drm_vm.c | 3 +
    drivers/gpu/drm/etnaviv/etnaviv_drv.h | 6 ++-
    drivers/gpu/drm/etnaviv/etnaviv_gem.c | 11 +++--
    drivers/gpu/drm/etnaviv/etnaviv_gem.h | 3 +
    drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c | 9 ++--
    drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 2 -
    drivers/gpu/drm/exynos/exynos_drm_gem.c | 10 +++--
    drivers/gpu/drm/exynos/exynos_drm_gem.h | 6 ++-
    drivers/gpu/drm/gma500/framebuffer.c | 3 +
    drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.h | 3 +
    drivers/gpu/drm/hisilicon/hibmc/hibmc_ttm.c | 3 +
    drivers/gpu/drm/i810/i810_dma.c | 3 +
    drivers/gpu/drm/i915/i915_gem_dmabuf.c | 6 ++-
    drivers/gpu/drm/i915/selftests/mock_dmabuf.c | 4 +-
    drivers/gpu/drm/mediatek/mtk_drm_gem.c | 8 ++--
    drivers/gpu/drm/mediatek/mtk_drm_gem.h | 5 +-
    drivers/gpu/drm/mgag200/mgag200_drv.h | 3 +
    drivers/gpu/drm/mgag200/mgag200_ttm.c | 3 +
    drivers/gpu/drm/msm/msm_drv.h | 6 ++-
    drivers/gpu/drm/msm/msm_fbdev.c | 6 ++-
    drivers/gpu/drm/msm/msm_gem.c | 5 +-
    drivers/gpu/drm/msm/msm_gem_prime.c | 3 +
    drivers/gpu/drm/nouveau/nouveau_ttm.c | 5 +-
    drivers/gpu/drm/nouveau/nouveau_ttm.h | 2 -
    drivers/gpu/drm/omapdrm/omap_drv.h | 3 +
    drivers/gpu/drm/omapdrm/omap_gem.c | 5 +-
    drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c | 2 -
    drivers/gpu/drm/qxl/qxl_drv.h | 6 ++-
    drivers/gpu/drm/qxl/qxl_prime.c | 2 -
    drivers/gpu/drm/qxl/qxl_ttm.c | 3 +
    drivers/gpu/drm/radeon/radeon_drv.c | 3 +
    drivers/gpu/drm/radeon/radeon_ttm.c | 3 +
    drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c | 5 +-
    drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 7 ++-
    drivers/gpu/drm/rockchip/rockchip_drm_gem.h | 5 +-
    drivers/gpu/drm/tegra/gem.c | 9 +++-
    drivers/gpu/drm/tegra/gem.h | 3 +
    drivers/gpu/drm/udl/udl_dmabuf.c | 3 +
    drivers/gpu/drm/udl/udl_drv.h | 3 +
    drivers/gpu/drm/udl/udl_fb.c | 3 +
    drivers/gpu/drm/udl/udl_gem.c | 5 +-
    drivers/gpu/drm/vc4/vc4_bo.c | 10 +++--
    drivers/gpu/drm/vc4/vc4_drv.h | 6 ++-
    drivers/gpu/drm/vgem/vgem_drv.c | 10 +++--
    drivers/gpu/drm/virtio/virtgpu_drv.h | 6 ++-
    drivers/gpu/drm/virtio/virtgpu_prime.c | 2 -
    drivers/gpu/drm/virtio/virtgpu_ttm.c | 3 +
    drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 3 +
    drivers/gpu/drm/vmwgfx/vmwgfx_prime.c | 3 +
    drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c | 3 +
    drivers/hsi/clients/cmt_speech.c | 3 +
    drivers/hwtracing/intel_th/msu.c | 3 +
    drivers/hwtracing/stm/core.c | 3 +
    drivers/infiniband/core/uverbs_main.c | 3 +
    drivers/infiniband/hw/hfi1/file_ops.c | 6 ++-
    drivers/infiniband/hw/qib/qib_file_ops.c | 5 +-
    drivers/media/common/saa7146/saa7146_fops.c | 3 +
    drivers/media/pci/bt8xx/bttv-driver.c | 3 +
    drivers/media/pci/cx18/cx18-fileops.c | 3 +
    drivers/media/pci/cx18/cx18-fileops.h | 3 +
    drivers/media/pci/meye/meye.c | 3 +
    drivers/media/pci/zoran/zoran_driver.c | 2 -
    drivers/media/platform/davinci/vpfe_capture.c | 3 +
    drivers/media/platform/exynos-gsc/gsc-m2m.c | 3 +
    drivers/media/platform/fsl-viu.c | 3 +
    drivers/media/platform/m2m-deinterlace.c | 3 +
    drivers/media/platform/mx2_emmaprp.c | 3 +
    drivers/media/platform/omap/omap_vout.c | 3 +
    drivers/media/platform/omap3isp/ispvideo.c | 3 +
    drivers/media/platform/s3c-camif/camif-capture.c | 3 +
    drivers/media/platform/s5p-mfc/s5p_mfc.c | 3 +
    drivers/media/platform/sh_veu.c | 3 +
    drivers/media/platform/soc_camera/soc_camera.c | 3 +
    drivers/media/platform/via-camera.c | 3 +
    drivers/media/usb/cpia2/cpia2_v4l.c | 3 +
    drivers/media/usb/cx231xx/cx231xx-417.c | 3 +
    drivers/media/usb/cx231xx/cx231xx-video.c | 3 +
    drivers/media/usb/gspca/gspca.c | 3 +
    drivers/media/usb/stkwebcam/stk-webcam.c | 3 +
    drivers/media/usb/tm6000/tm6000-video.c | 3 +
    drivers/media/usb/usbvision/usbvision-video.c | 3 +
    drivers/media/usb/uvc/uvc_v4l2.c | 3 +
    drivers/media/usb/zr364xx/zr364xx.c | 3 +
    drivers/media/v4l2-core/v4l2-dev.c | 5 +-
    drivers/media/v4l2-core/v4l2-mem2mem.c | 3 +
    drivers/media/v4l2-core/videobuf2-dma-contig.c | 2 -
    drivers/media/v4l2-core/videobuf2-dma-sg.c | 2 -
    drivers/media/v4l2-core/videobuf2-v4l2.c | 3 +
    drivers/media/v4l2-core/videobuf2-vmalloc.c | 2 -
    drivers/misc/aspeed-lpc-ctrl.c | 3 +
    drivers/misc/cxl/api.c | 5 +-
    drivers/misc/cxl/cxl.h | 3 +
    drivers/misc/cxl/file.c | 3 +
    drivers/misc/genwqe/card_dev.c | 3 +
    drivers/misc/mic/scif/scif_fd.c | 3 +
    drivers/misc/mic/vop/vop_vringh.c | 3 +
    drivers/misc/sgi-gru/grufile.c | 3 +
    drivers/mtd/mtdchar.c | 3 +
    drivers/pci/proc.c | 3 +
    drivers/rapidio/devices/rio_mport_cdev.c | 3 +
    drivers/sbus/char/flash.c | 3 +
    drivers/sbus/char/jsflash.c | 3 +
    drivers/scsi/cxlflash/superpipe.c | 5 +-
    drivers/scsi/sg.c | 3 +
    drivers/staging/android/ashmem.c | 3 +
    drivers/staging/android/ion/ion.c | 3 +
    drivers/staging/comedi/comedi_fops.c | 3 +
    .../staging/lustre/lustre/llite/llite_internal.h | 3 +
    drivers/staging/lustre/lustre/llite/llite_mmap.c | 5 +-
    .../media/atomisp/pci/atomisp2/atomisp_fops.c | 6 ++-
    drivers/staging/media/davinci_vpfe/vpfe_video.c | 3 +
    drivers/staging/media/omap4iss/iss_video.c | 3 +
    drivers/staging/vboxvideo/vbox_drv.h | 5 +-
    drivers/staging/vboxvideo/vbox_prime.c | 3 +
    drivers/staging/vboxvideo/vbox_ttm.c | 3 +
    drivers/staging/vme/devices/vme_user.c | 3 +
    drivers/tee/tee_shm.c | 3 +
    drivers/uio/uio.c | 3 +
    drivers/usb/core/devio.c | 3 +
    drivers/usb/gadget/function/uvc_v4l2.c | 3 +
    drivers/usb/mon/mon_bin.c | 3 +
    drivers/vfio/vfio.c | 7 ++-
    drivers/video/fbdev/68328fb.c | 6 ++-
    drivers/video/fbdev/amba-clcd.c | 2 -
    drivers/video/fbdev/aty/atyfb_base.c | 6 ++-
    drivers/video/fbdev/au1100fb.c | 3 +
    drivers/video/fbdev/au1200fb.c | 3 +
    drivers/video/fbdev/bw2.c | 5 +-
    drivers/video/fbdev/cg14.c | 5 +-
    drivers/video/fbdev/cg3.c | 5 +-
    drivers/video/fbdev/cg6.c | 5 +-
    drivers/video/fbdev/controlfb.c | 4 +-
    drivers/video/fbdev/core/fb_defio.c | 3 +
    drivers/video/fbdev/core/fbmem.c | 5 +-
    drivers/video/fbdev/ep93xx-fb.c | 3 +
    drivers/video/fbdev/fb-puv3.c | 2 -
    drivers/video/fbdev/ffb.c | 5 +-
    drivers/video/fbdev/gbefb.c | 2 -
    drivers/video/fbdev/igafb.c | 2 -
    drivers/video/fbdev/leo.c | 5 +-
    drivers/video/fbdev/omap/omapfb_main.c | 3 +
    drivers/video/fbdev/omap2/omapfb/omapfb-main.c | 3 +
    drivers/video/fbdev/p9100.c | 6 ++-
    drivers/video/fbdev/ps3fb.c | 3 +
    drivers/video/fbdev/pxa3xx-gcu.c | 3 +
    drivers/video/fbdev/sa1100fb.c | 2 -
    drivers/video/fbdev/sh_mobile_lcdcfb.c | 6 ++-
    drivers/video/fbdev/smscufx.c | 3 +
    drivers/video/fbdev/tcx.c | 5 +-
    drivers/video/fbdev/udlfb.c | 3 +
    drivers/video/fbdev/vermilion/vermilion.c | 3 +
    drivers/video/fbdev/vfb.c | 4 +-
    drivers/xen/gntalloc.c | 3 +
    drivers/xen/gntdev.c | 3 +
    drivers/xen/privcmd.c | 3 +
    drivers/xen/xenbus/xenbus_dev_backend.c | 3 +
    drivers/xen/xenfs/xenstored.c | 3 +
    fs/9p/vfs_file.c | 10 +++--
    fs/aio.c | 3 +
    fs/btrfs/file.c | 4 +-
    fs/ceph/addr.c | 3 +
    fs/ceph/super.h | 3 +
    fs/cifs/cifsfs.h | 6 ++-
    fs/cifs/file.c | 10 +++--
    fs/coda/file.c | 5 +-
    fs/ecryptfs/file.c | 5 +-
    fs/ext2/file.c | 5 +-
    fs/ext4/file.c | 3 +
    fs/f2fs/file.c | 3 +
    fs/fuse/file.c | 8 ++--
    fs/gfs2/file.c | 3 +
    fs/hugetlbfs/inode.c | 3 +
    fs/kernfs/file.c | 3 +
    fs/ncpfs/mmap.c | 3 +
    fs/ncpfs/ncp_fs.h | 2 -
    fs/nfs/file.c | 5 +-
    fs/nfs/internal.h | 2 -
    fs/nilfs2/file.c | 3 +
    fs/ocfs2/mmap.c | 3 +
    fs/ocfs2/mmap.h | 3 +
    fs/orangefs/file.c | 5 +-
    fs/proc/inode.c | 7 ++-
    fs/proc/vmcore.c | 6 ++-
    fs/ramfs/file-nommu.c | 6 ++-
    fs/romfs/mmap-nommu.c | 3 +
    fs/ubifs/file.c | 5 +-
    fs/xfs/xfs_file.c | 2 -
    include/drm/drm_drv.h | 3 +
    include/drm/drm_gem.h | 3 +
    include/drm/drm_gem_cma_helper.h | 6 ++-
    include/drm/drm_legacy.h | 3 +
    include/linux/dma-buf.h | 5 +-
    include/linux/fb.h | 6 ++-
    include/linux/fs.h | 14 ++++--
    include/linux/mm.h | 2 -
    include/linux/mman.h | 44 ++++++++++++++++++++
    include/media/v4l2-dev.h | 2 -
    include/media/v4l2-mem2mem.h | 3 +
    include/media/videobuf2-v4l2.h | 3 +
    include/misc/cxl.h | 3 +
    include/uapi/asm-generic/mman-common.h | 1
    ipc/shm.c | 5 +-
    kernel/events/core.c | 3 +
    kernel/kcov.c | 3 +
    kernel/relay.c | 3 +
    mm/filemap.c | 15 +++++--
    mm/mmap.c | 14 +++++-
    mm/nommu.c | 4 +-
    mm/shmem.c | 3 +
    net/socket.c | 6 ++-
    security/selinux/selinuxfs.c | 6 ++-
    sound/core/compress_offload.c | 3 +
    sound/core/hwdep.c | 3 +
    sound/core/info.c | 3 +
    sound/core/init.c | 3 +
    sound/core/oss/pcm_oss.c | 3 +
    sound/core/pcm_native.c | 3 +
    sound/oss/soundcard.c | 3 +
    sound/oss/swarm_cs4297a.c | 3 +
    tools/include/uapi/asm-generic/mman-common.h | 1
    virt/kvm/kvm_main.c | 3 +
    263 files changed, 720 insertions(+), 374 deletions(-)

    \
     
     \ /
      Last update: 2017-09-08 21:44    [W:4.191 / U:0.184 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site