diff options
author | Trent Piepho <xyzzy@speakeasy.org> | 2007-01-30 21:25:41 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2007-02-21 10:35:10 -0500 |
commit | 62d50addf0774115adaa9e01e09099c3d7daa13d (patch) | |
tree | 5490c0acef3aa645c6974437b3ca7a508ed755a3 /drivers/media/video/videodev.c | |
parent | e7b58f5259a81dbd9fbfea79408d272f44eb894f (diff) |
V4L/DVB (5163): Add checks for CAP_SYS_ADMIN to VIDIOC_DBG_G_REGISTER
Before, root privileges were only needed to set hardware registers, not
to read them. On some hardware, reading from the wrong place at the
wrong time can hang the machine. So, to be consistent, root privileges
are required to read registers on all hardware.
Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/video/videodev.c')
-rw-r--r-- | drivers/media/video/videodev.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/media/video/videodev.c b/drivers/media/video/videodev.c index 764a53b70db2..dc9b1ef678aa 100644 --- a/drivers/media/video/videodev.c +++ b/drivers/media/video/videodev.c | |||
@@ -1457,7 +1457,9 @@ static int __video_do_ioctl(struct inode *inode, struct file *file, | |||
1457 | case VIDIOC_DBG_G_REGISTER: | 1457 | case VIDIOC_DBG_G_REGISTER: |
1458 | { | 1458 | { |
1459 | struct v4l2_register *p=arg; | 1459 | struct v4l2_register *p=arg; |
1460 | if (vfd->vidioc_g_register) | 1460 | if (!capable(CAP_SYS_ADMIN)) |
1461 | ret=-EPERM; | ||
1462 | else if (vfd->vidioc_g_register) | ||
1461 | ret=vfd->vidioc_g_register(file, fh, p); | 1463 | ret=vfd->vidioc_g_register(file, fh, p); |
1462 | break; | 1464 | break; |
1463 | } | 1465 | } |