summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorCharles Baylis <cb-kernel@fishzet.co.uk>2021-07-16 17:43:12 +0100
committerDaniel Vetter <daniel.vetter@ffwll.ch>2021-07-20 15:57:43 +0200
commit3abab27c322e0f2acf981595aa8040c9164dc9fb (patch)
tree5044eea200c44d741c9f5f54b7e0fda2aef91145 /drivers
parenta3a9ee4b5254f212c2adaa8cd8ca03bfa112f49d (diff)
downloadlinux-3abab27c322e0f2acf981595aa8040c9164dc9fb.tar.bz2
drm: Return -ENOTTY for non-drm ioctls
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
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/drm_ioctl.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c
index 98ae00661656..f454e0424086 100644
--- a/drivers/gpu/drm/drm_ioctl.c
+++ b/drivers/gpu/drm/drm_ioctl.c
@@ -834,6 +834,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) {