From: Daniel Vetter <daniel@ffwll.ch>
To: DRI Development <dri-devel@lists.freedesktop.org>
Cc: Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
LKML <linux-kernel@vger.kernel.org>,
Daniel Vetter <daniel.vetter@ffwll.ch>,
Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
Kees Cook <keescook@chromium.org>,
linux-fbdev@vger.kernel.org,
Daniel Vetter <daniel.vetter@intel.com>
Subject: Re: [PATCH 3/4] fbdev: Add FBINFO_HIDE_SMEM_START flag
Date: Mon, 3 Sep 2018 18:48:47 +0200 [thread overview]
Message-ID: <20180903164847.GM21634@phenom.ffwll.local> (raw)
In-Reply-To: <20180822085405.10787-3-daniel.vetter@ffwll.ch>
On Wed, Aug 22, 2018 at 10:54:04AM +0200, Daniel Vetter wrote:
> 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.
>
> 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>
Any comments from the fbdev side on this?
-Daniel
> ---
> drivers/video/fbdev/core/fbmem.c | 4 ++++
> include/linux/fb.h | 7 +++++++
> 2 files changed, 11 insertions(+)
>
> diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
> index 609438d2465b..549d0f86fcf3 100644
> --- a/drivers/video/fbdev/core/fbmem.c
> +++ b/drivers/video/fbdev/core/fbmem.c
> @@ -1116,6 +1116,8 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
> if (!lock_fb_info(info))
> return -ENODEV;
> fix = info->fix;
> + if (info->flags & FBINFO_HIDE_SMEM_START)
> + fix.smem_start = 0;
> unlock_fb_info(info);
>
> ret = copy_to_user(argp, &fix, sizeof(fix)) ? -EFAULT : 0;
> @@ -1326,6 +1328,8 @@ static int fb_get_fscreeninfo(struct fb_info *info, unsigned int cmd,
> if (!lock_fb_info(info))
> return -ENODEV;
> fix = info->fix;
> + if (info->flags & FBINFO_HIDE_SMEM_START)
> + fix.smem_start = 0;
> unlock_fb_info(info);
> return do_fscreeninfo_to_user(&fix, compat_ptr(arg));
> }
> diff --git a/include/linux/fb.h b/include/linux/fb.h
> index fa8c6f9c9c3a..f42b09ca71f8 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;
> --
> 2.18.0
>
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
next prev parent reply other threads:[~2018-09-03 16:48 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20180822085418epcas5p30ab8aa4b49ba204f4891760af002bce1@epcas5p3.samsung.com>
2018-08-22 8:54 ` [PATCH 1/4] fbdev: Drop FBINFO_CAN_FORCE_OUTPUT flag Daniel Vetter
2018-08-22 8:54 ` [PATCH 2/4] vt: Remove vc_panic_force_write Daniel Vetter
2018-08-22 8:59 ` Greg Kroah-Hartman
2018-09-11 12:11 ` Daniel Vetter
2018-08-22 8:54 ` [PATCH 3/4] fbdev: Add FBINFO_HIDE_SMEM_START flag Daniel Vetter
2018-09-03 16:48 ` Daniel Vetter [this message]
2018-09-10 12:51 ` Bartlomiej Zolnierkiewicz
2018-08-22 8:54 ` [PATCH 4/4] drm/fb: Stop leaking physical address Daniel Vetter
2018-08-22 12:57 ` Sean Paul
2018-09-10 12:48 ` [PATCH 1/4] fbdev: Drop FBINFO_CAN_FORCE_OUTPUT flag Bartlomiej Zolnierkiewicz
2018-09-11 7:42 ` Daniel Vetter
2018-09-11 8:47 ` Bartlomiej Zolnierkiewicz
2018-09-11 12:12 ` [Intel-gfx] " Daniel Vetter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180903164847.GM21634@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=b.zolnierkie@samsung.com \
--cc=daniel.vetter@ffwll.ch \
--cc=daniel.vetter@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=keescook@chromium.org \
--cc=linux-fbdev@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox