lkml.org 
[lkml]   [2021]   [Jul]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.13 209/223] drm: Return -ENOTTY for non-drm ioctls
    Date
    From: Charles Baylis <cb-kernel@fishzet.co.uk>

    commit 3abab27c322e0f2acf981595aa8040c9164dc9fb upstream.

    drm: Return -ENOTTY for non-drm ioctls

    Return -ENOTTY from drm_ioctl() when userspace passes in a cmd number
    which doesn't relate to the drm subsystem.

    Glibc uses the TCGETS ioctl to implement isatty(), and without this
    change isatty() returns it incorrectly returns true for drm devices.

    To test run this command:
    $ if [ -t 0 ]; then echo is a tty; fi < /dev/dri/card0
    which shows "is a tty" without this patch.

    This may also modify memory which the userspace application is not
    expecting.

    Signed-off-by: Charles Baylis <cb-kernel@fishzet.co.uk>
    Cc: stable@vger.kernel.org
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/YPG3IBlzaMhfPqCr@stando.fishzet.co.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/gpu/drm/drm_ioctl.c | 3 +++
    include/drm/drm_ioctl.h | 1 +
    2 files changed, 4 insertions(+)

    --- a/drivers/gpu/drm/drm_ioctl.c
    +++ b/drivers/gpu/drm/drm_ioctl.c
    @@ -827,6 +827,9 @@ long drm_ioctl(struct file *filp,
    if (drm_dev_is_unplugged(dev))
    return -ENODEV;

    + if (DRM_IOCTL_TYPE(cmd) != DRM_IOCTL_BASE)
    + return -ENOTTY;
    +
    is_driver_ioctl = nr >= DRM_COMMAND_BASE && nr < DRM_COMMAND_END;

    if (is_driver_ioctl) {
    --- a/include/drm/drm_ioctl.h
    +++ b/include/drm/drm_ioctl.h
    @@ -68,6 +68,7 @@ typedef int drm_ioctl_compat_t(struct fi
    unsigned long arg);

    #define DRM_IOCTL_NR(n) _IOC_NR(n)
    +#define DRM_IOCTL_TYPE(n) _IOC_TYPE(n)
    #define DRM_MAJOR 226

    /**

    \
     
     \ /
      Last update: 2021-07-26 18:43    [W:4.169 / U:0.144 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site