diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-04-03 20:16:59 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-04-03 20:16:59 -0400 |
commit | ef1c4a6fa91bbbe9b09f770d28eba31a9edf770c (patch) | |
tree | 52f5d175031c553160d14890e876ffc5432d2467 /drivers/media/v4l2-core/v4l2-ioctl.c | |
parent | 147a89bc71e7db40f011454a40add7ff2d10f8d8 (diff) | |
parent | f8a695c4b43d02c89b8bba9ba6058fd5db1bc71d (diff) |
Merge tag 'media/v4.17-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media updates from Mauro Carvalho Chehab:
- new CEC pin injection code for testing purposes
- DVB frontend cxd2099 promoted from staging
- new platform driver for Sony cxd2880 DVB devices
- new sensor drivers: mt9t112, ov2685, ov5695, ov772x, tda1997x,
tw9910.c
- removal of unused cx18 and ivtv alsa mixers
- the reneseas-ceu driver doesn't depend on soc_camera anymore and
moved from staging
- removed the mantis_vp3028 driver, unused since 2009
- s5p-mfc: add support for version 10 of the MSP
- added a decoder for imon protocol
- atomisp: lots of cleanups
- imx074 and mt9t031: don't depend on soc_camera anymore, being
promoted from staging
- added helper functions to better support DVB I2C binding
- lots of driver improvements and cleanups
* tag 'media/v4.17-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (438 commits)
media: v4l2-ioctl: rename a temp var that stores _IOC_SIZE(cmd)
media: fimc-capture: get rid of two warnings
media: dvb-usb-v2: fix a missing dependency of I2C_MUX
media: uvc: to the right check at uvc_ioctl_enum_framesizes()
media: cec-core: fix a bug at cec_error_inj_write()
media: tda9840: cleanup a warning
media: tm6000: avoid casting just to print pointer address
media: em28xx-input: improve error handling code
media: zr364xx: avoid casting just to print pointer address
media: vivid-radio-rx: add a cast to avoid a warning
media: saa7134-alsa: don't use casts to print a buffer address
media: solo6x10: get rid of an address space warning
media: zoran: don't cast pointers to print them
media: ir-kbd-i2c: change the if logic to avoid a warning
media: ir-kbd-i2c: improve error handling code
media: saa7134-input: improve error handling
media: s2255drv: fix a casting warning
media: ivtvfb: Cleanup some warnings
media: videobuf-dma-sg: Fix a weird cast
soc_camera: fix a weird cast on printk
...
Diffstat (limited to 'drivers/media/v4l2-core/v4l2-ioctl.c')
-rw-r--r-- | drivers/media/v4l2-core/v4l2-ioctl.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c index 260288ca4f55..f48c505550e0 100644 --- a/drivers/media/v4l2-core/v4l2-ioctl.c +++ b/drivers/media/v4l2-core/v4l2-ioctl.c | |||
@@ -1273,6 +1273,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) | |||
1273 | case V4L2_PIX_FMT_VC1_ANNEX_L: descr = "VC-1 (SMPTE 412M Annex L)"; break; | 1273 | case V4L2_PIX_FMT_VC1_ANNEX_L: descr = "VC-1 (SMPTE 412M Annex L)"; break; |
1274 | case V4L2_PIX_FMT_VP8: descr = "VP8"; break; | 1274 | case V4L2_PIX_FMT_VP8: descr = "VP8"; break; |
1275 | case V4L2_PIX_FMT_VP9: descr = "VP9"; break; | 1275 | case V4L2_PIX_FMT_VP9: descr = "VP9"; break; |
1276 | case V4L2_PIX_FMT_HEVC: descr = "HEVC"; break; /* aka H.265 */ | ||
1276 | case V4L2_PIX_FMT_CPIA1: descr = "GSPCA CPiA YUV"; break; | 1277 | case V4L2_PIX_FMT_CPIA1: descr = "GSPCA CPiA YUV"; break; |
1277 | case V4L2_PIX_FMT_WNVA: descr = "WNVA"; break; | 1278 | case V4L2_PIX_FMT_WNVA: descr = "WNVA"; break; |
1278 | case V4L2_PIX_FMT_SN9C10X: descr = "GSPCA SN9C10X"; break; | 1279 | case V4L2_PIX_FMT_SN9C10X: descr = "GSPCA SN9C10X"; break; |
@@ -2611,7 +2612,7 @@ static struct v4l2_ioctl_info v4l2_ioctls[] = { | |||
2611 | IOCTL_INFO_FNC(VIDIOC_PREPARE_BUF, v4l_prepare_buf, v4l_print_buffer, INFO_FL_QUEUE), | 2612 | IOCTL_INFO_FNC(VIDIOC_PREPARE_BUF, v4l_prepare_buf, v4l_print_buffer, INFO_FL_QUEUE), |
2612 | IOCTL_INFO_STD(VIDIOC_ENUM_DV_TIMINGS, vidioc_enum_dv_timings, v4l_print_enum_dv_timings, INFO_FL_CLEAR(v4l2_enum_dv_timings, pad)), | 2613 | IOCTL_INFO_STD(VIDIOC_ENUM_DV_TIMINGS, vidioc_enum_dv_timings, v4l_print_enum_dv_timings, INFO_FL_CLEAR(v4l2_enum_dv_timings, pad)), |
2613 | IOCTL_INFO_STD(VIDIOC_QUERY_DV_TIMINGS, vidioc_query_dv_timings, v4l_print_dv_timings, INFO_FL_ALWAYS_COPY), | 2614 | IOCTL_INFO_STD(VIDIOC_QUERY_DV_TIMINGS, vidioc_query_dv_timings, v4l_print_dv_timings, INFO_FL_ALWAYS_COPY), |
2614 | IOCTL_INFO_STD(VIDIOC_DV_TIMINGS_CAP, vidioc_dv_timings_cap, v4l_print_dv_timings_cap, INFO_FL_CLEAR(v4l2_dv_timings_cap, type)), | 2615 | IOCTL_INFO_STD(VIDIOC_DV_TIMINGS_CAP, vidioc_dv_timings_cap, v4l_print_dv_timings_cap, INFO_FL_CLEAR(v4l2_dv_timings_cap, pad)), |
2615 | IOCTL_INFO_FNC(VIDIOC_ENUM_FREQ_BANDS, v4l_enum_freq_bands, v4l_print_freq_band, 0), | 2616 | IOCTL_INFO_FNC(VIDIOC_ENUM_FREQ_BANDS, v4l_enum_freq_bands, v4l_print_freq_band, 0), |
2616 | IOCTL_INFO_FNC(VIDIOC_DBG_G_CHIP_INFO, v4l_dbg_g_chip_info, v4l_print_dbg_chip_info, INFO_FL_CLEAR(v4l2_dbg_chip_info, match)), | 2617 | IOCTL_INFO_FNC(VIDIOC_DBG_G_CHIP_INFO, v4l_dbg_g_chip_info, v4l_print_dbg_chip_info, INFO_FL_CLEAR(v4l2_dbg_chip_info, match)), |
2617 | IOCTL_INFO_FNC(VIDIOC_QUERY_EXT_CTRL, v4l_query_ext_ctrl, v4l_print_query_ext_ctrl, INFO_FL_CTRL | INFO_FL_CLEAR(v4l2_query_ext_ctrl, id)), | 2618 | IOCTL_INFO_FNC(VIDIOC_QUERY_EXT_CTRL, v4l_query_ext_ctrl, v4l_print_query_ext_ctrl, INFO_FL_CTRL | INFO_FL_CLEAR(v4l2_query_ext_ctrl, id)), |
@@ -2832,14 +2833,15 @@ video_usercopy(struct file *file, unsigned int cmd, unsigned long arg, | |||
2832 | size_t array_size = 0; | 2833 | size_t array_size = 0; |
2833 | void __user *user_ptr = NULL; | 2834 | void __user *user_ptr = NULL; |
2834 | void **kernel_ptr = NULL; | 2835 | void **kernel_ptr = NULL; |
2836 | const size_t ioc_size = _IOC_SIZE(cmd); | ||
2835 | 2837 | ||
2836 | /* Copy arguments into temp kernel buffer */ | 2838 | /* Copy arguments into temp kernel buffer */ |
2837 | if (_IOC_DIR(cmd) != _IOC_NONE) { | 2839 | if (_IOC_DIR(cmd) != _IOC_NONE) { |
2838 | if (_IOC_SIZE(cmd) <= sizeof(sbuf)) { | 2840 | if (ioc_size <= sizeof(sbuf)) { |
2839 | parg = sbuf; | 2841 | parg = sbuf; |
2840 | } else { | 2842 | } else { |
2841 | /* too big to allocate from stack */ | 2843 | /* too big to allocate from stack */ |
2842 | mbuf = kvmalloc(_IOC_SIZE(cmd), GFP_KERNEL); | 2844 | mbuf = kvmalloc(ioc_size, GFP_KERNEL); |
2843 | if (NULL == mbuf) | 2845 | if (NULL == mbuf) |
2844 | return -ENOMEM; | 2846 | return -ENOMEM; |
2845 | parg = mbuf; | 2847 | parg = mbuf; |
@@ -2847,7 +2849,7 @@ video_usercopy(struct file *file, unsigned int cmd, unsigned long arg, | |||
2847 | 2849 | ||
2848 | err = -EFAULT; | 2850 | err = -EFAULT; |
2849 | if (_IOC_DIR(cmd) & _IOC_WRITE) { | 2851 | if (_IOC_DIR(cmd) & _IOC_WRITE) { |
2850 | unsigned int n = _IOC_SIZE(cmd); | 2852 | unsigned int n = ioc_size; |
2851 | 2853 | ||
2852 | /* | 2854 | /* |
2853 | * In some cases, only a few fields are used as input, | 2855 | * In some cases, only a few fields are used as input, |
@@ -2868,11 +2870,11 @@ video_usercopy(struct file *file, unsigned int cmd, unsigned long arg, | |||
2868 | goto out; | 2870 | goto out; |
2869 | 2871 | ||
2870 | /* zero out anything we don't copy from userspace */ | 2872 | /* zero out anything we don't copy from userspace */ |
2871 | if (n < _IOC_SIZE(cmd)) | 2873 | if (n < ioc_size) |
2872 | memset((u8 *)parg + n, 0, _IOC_SIZE(cmd) - n); | 2874 | memset((u8 *)parg + n, 0, ioc_size - n); |
2873 | } else { | 2875 | } else { |
2874 | /* read-only ioctl */ | 2876 | /* read-only ioctl */ |
2875 | memset(parg, 0, _IOC_SIZE(cmd)); | 2877 | memset(parg, 0, ioc_size); |
2876 | } | 2878 | } |
2877 | } | 2879 | } |
2878 | 2880 | ||
@@ -2930,7 +2932,7 @@ out_array_args: | |||
2930 | switch (_IOC_DIR(cmd)) { | 2932 | switch (_IOC_DIR(cmd)) { |
2931 | case _IOC_READ: | 2933 | case _IOC_READ: |
2932 | case (_IOC_WRITE | _IOC_READ): | 2934 | case (_IOC_WRITE | _IOC_READ): |
2933 | if (copy_to_user((void __user *)arg, parg, _IOC_SIZE(cmd))) | 2935 | if (copy_to_user((void __user *)arg, parg, ioc_size)) |
2934 | err = -EFAULT; | 2936 | err = -EFAULT; |
2935 | break; | 2937 | break; |
2936 | } | 2938 | } |