aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/fb.h
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2018-08-22 10:54:04 +0200
committerDaniel Vetter <daniel.vetter@ffwll.ch>2018-09-11 14:11:54 +0200
commitda6c7707caf3736c1cf968606bd97c07e79625d4 (patch)
treea8b9621e30d58b35c3547a17d753962ddbeeecde /include/linux/fb.h
parentvt: Remove vc_panic_force_write (diff)
downloadlinux-dev-da6c7707caf3736c1cf968606bd97c07e79625d4.tar.xz
linux-dev-da6c7707caf3736c1cf968606bd97c07e79625d4.zip
fbdev: Add FBINFO_HIDE_SMEM_START flag
DRM drivers really, really, really don't want random userspace to share buffer behind it's back, bypassing the dma-buf buffer sharing machanism. For that reason we've ruthlessly rejected any IOCTL exposing the physical address of any graphics buffer. Unfortunately fbdev comes with that built-in. We could just set smem_start to 0, but that means we'd have to hand-roll our own fb_mmap implementation. For good reasons many drivers do that, but smem_start/length is still super convenient. Hence instead just stop the leak in the ioctl, to keep fb mmap working as-is. A second patch will set this flag for all drm drivers. Acked-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Cc: Kees Cook <keescook@chromium.org> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: linux-fbdev@vger.kernel.org Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20180822085405.10787-3-daniel.vetter@ffwll.ch
Diffstat (limited to 'include/linux/fb.h')
-rw-r--r--include/linux/fb.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/include/linux/fb.h b/include/linux/fb.h
index b1db5c5eb671..a3cab6dc9b44 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -456,6 +456,13 @@ struct fb_tile_ops {
* and host endianness. Drivers should not use this flag.
*/
#define FBINFO_BE_MATH 0x100000
+/*
+ * Hide smem_start in the FBIOGET_FSCREENINFO IOCTL. This is used by modern DRM
+ * drivers to stop userspace from trying to share buffers behind the kernel's
+ * back. Instead dma-buf based buffer sharing should be used.
+ */
+#define FBINFO_HIDE_SMEM_START 0x200000
+
struct fb_info {
atomic_t count;