Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[media] v4l: removal of old, obsolete ioctls

Some ioctl's were defined wrong on 2.6.2 and 2.6.6, using the wrong
type of R/W arguments. They were fixed, but the old ioctl names are
still there, maintained to avoid breaking binary compatibility:

There's no sense on preserving those forever, as it is very doubtful
that someone would try to use a such old binary with a modern kernel.
Removing them will allow us to remove some magic done at the V4L ioctl
handler.

Note that any application compiled with a videodev2.h from 2.6.7 or later
will be using the correct ioctls.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

authored by

Hans Verkuil and committed by
Mauro Carvalho Chehab
7ee40aad dae86ccb

-90
-21
Documentation/feature-removal-schedule.txt
··· 97 97 98 98 --------------------------- 99 99 100 - What: Video4Linux: Remove obsolete ioctl's 101 - When: kernel 2.6.39 102 - Files: include/media/videodev2.h 103 - Why: Some ioctl's were defined wrong on 2.6.2 and 2.6.6, using the wrong 104 - type of R/W arguments. They were fixed, but the old ioctl names are 105 - still there, maintained to avoid breaking binary compatibility: 106 - #define VIDIOC_OVERLAY_OLD _IOWR('V', 14, int) 107 - #define VIDIOC_S_PARM_OLD _IOW('V', 22, struct v4l2_streamparm) 108 - #define VIDIOC_S_CTRL_OLD _IOW('V', 28, struct v4l2_control) 109 - #define VIDIOC_G_AUDIO_OLD _IOWR('V', 33, struct v4l2_audio) 110 - #define VIDIOC_G_AUDOUT_OLD _IOWR('V', 49, struct v4l2_audioout) 111 - #define VIDIOC_CROPCAP_OLD _IOR('V', 58, struct v4l2_cropcap) 112 - There's no sense on preserving those forever, as it is very doubtful 113 - that someone would try to use a such old binary with a modern kernel. 114 - Removing them will allow us to remove some magic done at the V4L ioctl 115 - handler. 116 - 117 - Who: Mauro Carvalho Chehab <mchehab@infradead.org> 118 - 119 - --------------------------- 120 - 121 100 What: sys_sysctl 122 101 When: September 2010 123 102 Option: CONFIG_SYSCTL_SYSCALL
-1
drivers/media/video/v4l2-common.c
··· 59 59 #include <asm/pgtable.h> 60 60 #include <asm/io.h> 61 61 #include <asm/div64.h> 62 - #define __OLD_VIDIOC_ /* To allow fixing old calls*/ 63 62 #include <media/v4l2-common.h> 64 63 #include <media/v4l2-device.h> 65 64 #include <media/v4l2-ctrls.h>
-15
drivers/media/video/v4l2-compat-ioctl32.c
··· 14 14 */ 15 15 16 16 #include <linux/compat.h> 17 - #define __OLD_VIDIOC_ /* To allow fixing old calls*/ 18 17 #include <linux/videodev2.h> 19 18 #include <linux/module.h> 20 19 #include <media/v4l2-ioctl.h> ··· 677 678 #define VIDIOC_TRY_EXT_CTRLS32 _IOWR('V', 73, struct v4l2_ext_controls32) 678 679 679 680 #define VIDIOC_OVERLAY32 _IOW ('V', 14, s32) 680 - #ifdef __OLD_VIDIOC_ 681 - #define VIDIOC_OVERLAY32_OLD _IOWR('V', 14, s32) 682 - #endif 683 681 #define VIDIOC_STREAMON32 _IOW ('V', 18, s32) 684 682 #define VIDIOC_STREAMOFF32 _IOW ('V', 19, s32) 685 683 #define VIDIOC_G_INPUT32 _IOR ('V', 38, s32) ··· 716 720 case VIDIOC_S_EXT_CTRLS32: cmd = VIDIOC_S_EXT_CTRLS; break; 717 721 case VIDIOC_TRY_EXT_CTRLS32: cmd = VIDIOC_TRY_EXT_CTRLS; break; 718 722 case VIDIOC_OVERLAY32: cmd = VIDIOC_OVERLAY; break; 719 - #ifdef __OLD_VIDIOC_ 720 - case VIDIOC_OVERLAY32_OLD: cmd = VIDIOC_OVERLAY; break; 721 - #endif 722 723 case VIDIOC_STREAMON32: cmd = VIDIOC_STREAMON; break; 723 724 case VIDIOC_STREAMOFF32: cmd = VIDIOC_STREAMOFF; break; 724 725 case VIDIOC_G_INPUT32: cmd = VIDIOC_G_INPUT; break; ··· 849 856 return ret; 850 857 851 858 switch (cmd) { 852 - #ifdef __OLD_VIDIOC_ 853 - case VIDIOC_OVERLAY32_OLD: 854 - case VIDIOC_S_PARM_OLD: 855 - case VIDIOC_S_CTRL_OLD: 856 - case VIDIOC_G_AUDIO_OLD: 857 - case VIDIOC_G_AUDOUT_OLD: 858 - case VIDIOC_CROPCAP_OLD: 859 - #endif 860 859 case VIDIOC_QUERYCAP: 861 860 case VIDIOC_RESERVED: 862 861 case VIDIOC_ENUM_FMT:
-38
drivers/media/video/v4l2-ioctl.c
··· 17 17 #include <linux/types.h> 18 18 #include <linux/kernel.h> 19 19 20 - #define __OLD_VIDIOC_ /* To allow fixing old calls */ 21 20 #include <linux/videodev2.h> 22 21 23 22 #include <media/v4l2-common.h> ··· 296 297 297 298 /* 298 299 * helper function -- handles userspace copying for ioctl arguments 299 - */ 300 - 301 - #ifdef __OLD_VIDIOC_ 302 - static unsigned int 303 - video_fix_command(unsigned int cmd) 304 - { 305 - switch (cmd) { 306 - case VIDIOC_OVERLAY_OLD: 307 - cmd = VIDIOC_OVERLAY; 308 - break; 309 - case VIDIOC_S_PARM_OLD: 310 - cmd = VIDIOC_S_PARM; 311 - break; 312 - case VIDIOC_S_CTRL_OLD: 313 - cmd = VIDIOC_S_CTRL; 314 - break; 315 - case VIDIOC_G_AUDIO_OLD: 316 - cmd = VIDIOC_G_AUDIO; 317 - break; 318 - case VIDIOC_G_AUDOUT_OLD: 319 - cmd = VIDIOC_G_AUDOUT; 320 - break; 321 - case VIDIOC_CROPCAP_OLD: 322 - cmd = VIDIOC_CROPCAP; 323 - break; 324 - } 325 - return cmd; 326 - } 327 - #endif 328 - 329 - /* 330 300 * Obsolete usercopy function - Should be removed soon 331 301 */ 332 302 long ··· 310 342 size_t ctrls_size = 0; 311 343 void __user *user_ptr = NULL; 312 344 313 - #ifdef __OLD_VIDIOC_ 314 - cmd = video_fix_command(cmd); 315 - #endif 316 345 is_ext_ctrl = (cmd == VIDIOC_S_EXT_CTRLS || cmd == VIDIOC_G_EXT_CTRLS || 317 346 cmd == VIDIOC_TRY_EXT_CTRLS); 318 347 ··· 2344 2379 void __user *user_ptr = NULL; 2345 2380 void **kernel_ptr = NULL; 2346 2381 2347 - #ifdef __OLD_VIDIOC_ 2348 - cmd = video_fix_command(cmd); 2349 - #endif 2350 2382 /* Copy arguments into temp kernel buffer */ 2351 2383 if (_IOC_DIR(cmd) != _IOC_NONE) { 2352 2384 if (_IOC_SIZE(cmd) <= sizeof(sbuf)) {
-5
drivers/staging/easycap/easycap_ioctl.c
··· 1399 1399 break; 1400 1400 } 1401 1401 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 1402 - #if defined(VIDIOC_S_CTRL_OLD) 1403 - case VIDIOC_S_CTRL_OLD: { 1404 - JOM(8, "VIDIOC_S_CTRL_OLD required at least for xawtv\n"); 1405 - } 1406 - #endif /*VIDIOC_S_CTRL_OLD*/ 1407 1402 case VIDIOC_S_CTRL: 1408 1403 { 1409 1404 struct v4l2_control v4l2_control;
-10
include/linux/videodev2.h
··· 1935 1935 /* Reminder: when adding new ioctls please add support for them to 1936 1936 drivers/media/video/v4l2-compat-ioctl32.c as well! */ 1937 1937 1938 - #ifdef __OLD_VIDIOC_ 1939 - /* for compatibility, will go away some day */ 1940 - #define VIDIOC_OVERLAY_OLD _IOWR('V', 14, int) 1941 - #define VIDIOC_S_PARM_OLD _IOW('V', 22, struct v4l2_streamparm) 1942 - #define VIDIOC_S_CTRL_OLD _IOW('V', 28, struct v4l2_control) 1943 - #define VIDIOC_G_AUDIO_OLD _IOWR('V', 33, struct v4l2_audio) 1944 - #define VIDIOC_G_AUDOUT_OLD _IOWR('V', 49, struct v4l2_audioout) 1945 - #define VIDIOC_CROPCAP_OLD _IOR('V', 58, struct v4l2_cropcap) 1946 - #endif 1947 - 1948 1938 #define BASE_VIDIOC_PRIVATE 192 /* 192-255 are private */ 1949 1939 1950 1940 #endif /* __LINUX_VIDEODEV2_H */