linux-stable/include/drm
Chris Wilson 3e977ac617 drm/i915: Prevent writing into a read-only object via a GGTT mmap
If the user has created a read-only object, they should not be allowed
to circumvent the write protection by using a GGTT mmapping. Deny it.

Also most machines do not support read-only GGTT PTEs, so again we have
to reject attempted writes. Fortunately, this is known a priori, so we
can at least reject in the call to create the mmap (with a sanity check
in the fault handler).

v2: Check the vma->vm_flags during mmap() to allow readonly access.
v3: Remove VM_MAYWRITE to curtail mprotect()

Testcase: igt/gem_userptr_blits/readonly_mmap*
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Jon Bloomfield <jon.bloomfield@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Matthew Auld <matthew.william.auld@gmail.com>
Cc: David Herrmann <dh.herrmann@gmail.com>
Reviewed-by: Matthew Auld <matthew.william.auld@gmail.com> #v1
Reviewed-by: Jon Bloomfield <jon.bloomfield@intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180712185315.3288-4-chris@chris-wilson.co.uk
2018-07-13 16:14:04 +01:00
..
bridge drm/bridge: analogix_dp: Split the platform-specific poweron in two parts 2018-04-24 08:34:49 +02:00
i2c
tinydrm drm: Move simple_display_pipe prepare_fb helper into gem fb helpers 2018-04-24 13:57:22 +02:00
ttm drm/ttm: Export the ttm_k[un]map_atomic_prot API. 2018-03-22 11:10:06 +01:00
amd_asic_type.h drm/amdgpu: add vega12 to asic_type enum 2018-03-21 14:23:39 -05:00
ati_pcigart.h
drm_agpsupport.h
drm_atomic.h drm-misc-next for 4.17: 2018-03-14 10:59:16 +10:00
drm_atomic_helper.h drm: Don't pass clip to drm_atomic_helper_check_plane_state() 2018-03-05 20:48:25 +02:00
drm_auth.h
drm_blend.h drm/blend: Add a generic alpha property 2018-04-16 21:17:29 +02:00
drm_bridge.h drm/bridge: Rename argument from crtc to bridge 2018-02-07 09:06:37 +01:00
drm_cache.h drm: add func to get max iomem address v2 2018-02-13 11:57:59 -05:00
drm_color_mgmt.h drm: Introduce drm_color_lut_size() 2018-03-16 15:44:01 +02:00
drm_connector.h drm: add documentation for tv connector state margins 2018-02-20 16:04:43 +02:00
drm_crtc.h
drm_crtc_helper.h drm: Allow determining if current task is output poll worker 2018-02-16 22:30:06 +01:00
drm_debugfs.h
drm_debugfs_crc.h
drm_device.h drm: Use srcu to protect drm_device.unplugged 2018-03-29 13:19:20 +03:00
drm_displayid.h
drm_dp_dual_mode_helper.h
drm_dp_helper.h Merge airlied/drm-next into drm-intel-next-queued 2018-03-30 11:52:33 -07:00
drm_dp_mst_helper.h
drm_drv.h Merge airlied/drm-next into drm-misc-next 2018-03-30 12:35:45 -04:00
drm_edid.h drm: Don't EXPORT drm_add/reset_display_info 2018-04-24 21:34:53 +02:00
drm_encoder.h
drm_encoder_slave.h
drm_fb_cma_helper.h
drm_fb_helper.h
drm_file.h
drm_fixed.h
drm_flip_work.h
drm_fourcc.h drm/fourcc: Add a alpha field to drm_format_info 2018-01-29 12:07:47 +01:00
drm_framebuffer.h
drm_gem.h drm: move read_domains and write_domain into i915 2018-02-16 14:12:48 +00:00
drm_gem_cma_helper.h
drm_gem_framebuffer_helper.h drm: Move simple_display_pipe prepare_fb helper into gem fb helpers 2018-04-24 13:57:22 +02:00
drm_global.h
drm_hashtab.h
drm_hdcp.h drm: Fix HDCP downstream dev count read 2018-04-16 12:10:48 -04:00
drm_ioctl.h
drm_irq.h
drm_lease.h
drm_legacy.h drm: prefer inline over __inline__ 2018-03-28 09:34:12 +03:00
drm_mipi_dsi.h
drm_mm.h
drm_mode_config.h drm: Add drm_mode_config->normalize_zpos boolean 2018-03-28 09:45:43 +03:00
drm_mode_object.h drm: remove drm_mode_object_{un/reference} aliases 2018-03-19 09:09:46 -04:00
drm_modes.h drm/modes: Provide global mode_valid hook 2018-01-29 21:51:51 +02:00
drm_modeset_helper.h
drm_modeset_helper_vtables.h drm/atomic: better doc for implicit vs explicit fencing 2018-04-24 14:01:15 +02:00
drm_modeset_lock.h
drm_of.h
drm_os_linux.h
drm_panel.h
drm_pci.h
drm_pciids.h
drm_plane.h drm/atomic: better doc for implicit vs explicit fencing 2018-04-24 14:01:15 +02:00
drm_plane_helper.h drm: Don't pass clip to drm_atomic_helper_check_plane_state() 2018-03-05 20:48:25 +02:00
drm_prime.h
drm_print.h drm: Reduce object size of DRM_DEV_<LEVEL> uses 2018-03-19 15:15:42 +01:00
drm_property.h drm: Remove drm_property_{un/reference}_blob aliases 2018-03-22 09:21:53 -04:00
drm_rect.h
drm_scdc_helper.h
drm_simple_kms_helper.h drm: Move simple_display_pipe prepare_fb helper into gem fb helpers 2018-04-24 13:57:22 +02:00
drm_syncobj.h
drm_sysfs.h
drm_utils.h
drm_vblank.h Merge tag 'drm-intel-next-2018-02-21' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-03-01 14:07:22 +10:00
drm_vma_manager.h drm/i915: Prevent writing into a read-only object via a GGTT mmap 2018-07-13 16:14:04 +01:00
drmP.h drm: make drm_core_check_feature() bool that it is 2018-03-28 09:35:20 +03:00
gma_drm.h
gpu_scheduler.h
gpu_scheduler_trace.h
i915_component.h
i915_drm.h x86/gpu: reserve ICL's graphics stolen memory 2018-07-10 16:28:47 -07:00
i915_pciids.h drm/i915/aml: Introducing Amber Lake platform 2018-06-18 10:49:57 -07:00
intel-gtt.h
intel_lpe_audio.h
spsc_queue.h