[hverkuil-media-tree:alt-ctrls 1/2] drivers/media/v4l2-core/v4l2-ioctl.c:2256:34: warning: unused variable 'ctrls'

From: kernel test robot
Date: Thu Sep 15 2022 - 04:05:54 EST


tree: git://linuxtv.org/hverkuil/media_tree.git alt-ctrls
head: c6e0e18a5be6b8a301595a30ba369cbee4a60807
commit: b28feb32252c212b4d345f0da7ceb285d763e1b9 [1/2] wip
config: x86_64-defconfig (https://download.01.org/0day-ci/archive/20220915/202209151644.XpZIThge-lkp@xxxxxxxxx/config)
compiler: gcc-11 (Debian 11.3.0-5) 11.3.0
reproduce (this is a W=1 build):
git remote add hverkuil-media-tree git://linuxtv.org/hverkuil/media_tree.git
git fetch --no-tags hverkuil-media-tree alt-ctrls
git checkout b28feb32252c212b4d345f0da7ceb285d763e1b9
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/media/usb/uvc/ drivers/media/v4l2-core/

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

| ~~~~~~~~~~~~~~~~~~~~~^~~~
drivers/media/v4l2-core/v4l2-ioctl.c:2264:53: error: passing argument 3 of 'ops->vidioc_g_ctrl' from incompatible pointer type [-Werror=incompatible-pointer-types]
2264 | return ops->vidioc_g_ctrl(file, fh, p);
| ^
| |
| struct v4l2_control *
drivers/media/v4l2-core/v4l2-ioctl.c:2264:53: note: expected 'struct v4l2_control *' but argument is of type 'struct v4l2_control *'
In file included from include/linux/videodev2.h:61,
from drivers/media/v4l2-core/v4l2-ioctl.c:19:
drivers/media/v4l2-core/v4l2-ioctl.c:2268:43: error: invalid use of undefined type 'struct v4l2_control'
2268 | ctrls.which = V4L2_CTRL_ID2WHICH(p->id);
| ^~
include/uapi/linux/videodev2.h:1893:37: note: in definition of macro 'V4L2_CTRL_ID2WHICH'
1893 | #define V4L2_CTRL_ID2WHICH(id) ((id) & 0x0fff0000UL)
| ^~
drivers/media/v4l2-core/v4l2-ioctl.c:2271:20: error: invalid use of undefined type 'struct v4l2_control'
2271 | ctrl.id = p->id;
| ^~
drivers/media/v4l2-core/v4l2-ioctl.c:2272:23: error: invalid use of undefined type 'struct v4l2_control'
2272 | ctrl.value = p->value;
| ^~
In file included from include/asm-generic/ioctl.h:5,
from ./arch/x86/include/generated/uapi/asm/ioctl.h:1,
from include/uapi/linux/ioctl.h:5,
from include/uapi/linux/apm_bios.h:133,
from include/linux/apm_bios.h:9,
from arch/x86/include/uapi/asm/bootparam.h:46,
from arch/x86/include/asm/mem_encrypt.h:18,
from include/linux/mem_encrypt.h:17,
from arch/x86/include/asm/processor-flags.h:6,
from arch/x86/include/asm/processor.h:5,
from arch/x86/include/asm/timex.h:5,
from include/linux/timex.h:67,
from include/linux/time32.h:13,
from include/linux/time.h:60,
from include/linux/compat.h:10,
from drivers/media/v4l2-core/v4l2-ioctl.c:11:
include/uapi/linux/videodev2.h:2660:48: error: invalid application of 'sizeof' to incomplete type 'struct v4l2_control'
2660 | #define VIDIOC_G_CTRL _IOWR('V', 27, struct v4l2_control)
| ^~~~~~
include/uapi/asm-generic/ioctl.h:73:12: note: in definition of macro '_IOC'
73 | ((size) << _IOC_SIZESHIFT))
| ^~~~
include/uapi/asm-generic/ioctl.h:88:72: note: in expansion of macro '_IOC_TYPECHECK'
88 | #define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size)))
| ^~~~~~~~~~~~~~
include/uapi/linux/videodev2.h:2660:33: note: in expansion of macro '_IOWR'
2660 | #define VIDIOC_G_CTRL _IOWR('V', 27, struct v4l2_control)
| ^~~~~
drivers/media/v4l2-core/v4l2-ioctl.c:2273:37: note: in expansion of macro 'VIDIOC_G_CTRL'
2273 | if (check_ext_ctrls(&ctrls, VIDIOC_G_CTRL)) {
| ^~~~~~~~~~~~~
include/asm-generic/ioctl.h:13:32: error: array type has incomplete element type 'struct v4l2_control'
13 | ((sizeof(t) == sizeof(t[1]) && \
| ^
include/uapi/asm-generic/ioctl.h:73:12: note: in definition of macro '_IOC'
73 | ((size) << _IOC_SIZESHIFT))
| ^~~~
include/uapi/asm-generic/ioctl.h:88:72: note: in expansion of macro '_IOC_TYPECHECK'
88 | #define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size)))
| ^~~~~~~~~~~~~~
include/uapi/linux/videodev2.h:2660:33: note: in expansion of macro '_IOWR'
2660 | #define VIDIOC_G_CTRL _IOWR('V', 27, struct v4l2_control)
| ^~~~~
drivers/media/v4l2-core/v4l2-ioctl.c:2273:37: note: in expansion of macro 'VIDIOC_G_CTRL'
2273 | if (check_ext_ctrls(&ctrls, VIDIOC_G_CTRL)) {
| ^~~~~~~~~~~~~
include/uapi/linux/videodev2.h:2660:48: error: invalid application of 'sizeof' to incomplete type 'struct v4l2_control'
2660 | #define VIDIOC_G_CTRL _IOWR('V', 27, struct v4l2_control)
| ^~~~~~
include/uapi/asm-generic/ioctl.h:73:12: note: in definition of macro '_IOC'
73 | ((size) << _IOC_SIZESHIFT))
| ^~~~
include/uapi/asm-generic/ioctl.h:88:72: note: in expansion of macro '_IOC_TYPECHECK'
88 | #define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size)))
| ^~~~~~~~~~~~~~
include/uapi/linux/videodev2.h:2660:33: note: in expansion of macro '_IOWR'
2660 | #define VIDIOC_G_CTRL _IOWR('V', 27, struct v4l2_control)
| ^~~~~
drivers/media/v4l2-core/v4l2-ioctl.c:2273:37: note: in expansion of macro 'VIDIOC_G_CTRL'
2273 | if (check_ext_ctrls(&ctrls, VIDIOC_G_CTRL)) {
| ^~~~~~~~~~~~~
include/uapi/linux/videodev2.h:2660:48: error: invalid application of 'sizeof' to incomplete type 'struct v4l2_control'
2660 | #define VIDIOC_G_CTRL _IOWR('V', 27, struct v4l2_control)
| ^~~~~~
include/uapi/asm-generic/ioctl.h:73:12: note: in definition of macro '_IOC'
73 | ((size) << _IOC_SIZESHIFT))
| ^~~~
include/uapi/asm-generic/ioctl.h:88:72: note: in expansion of macro '_IOC_TYPECHECK'
88 | #define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size)))
| ^~~~~~~~~~~~~~
include/uapi/linux/videodev2.h:2660:33: note: in expansion of macro '_IOWR'
2660 | #define VIDIOC_G_CTRL _IOWR('V', 27, struct v4l2_control)
| ^~~~~
drivers/media/v4l2-core/v4l2-ioctl.c:2273:37: note: in expansion of macro 'VIDIOC_G_CTRL'
2273 | if (check_ext_ctrls(&ctrls, VIDIOC_G_CTRL)) {
| ^~~~~~~~~~~~~
drivers/media/v4l2-core/v4l2-ioctl.c:2277:26: error: invalid use of undefined type 'struct v4l2_control'
2277 | p->value = ctrl.value;
| ^~
>> drivers/media/v4l2-core/v4l2-ioctl.c:2256:34: warning: unused variable 'ctrls' [-Wunused-variable]
2256 | struct v4l2_ext_controls ctrls;
| ^~~~~
drivers/media/v4l2-core/v4l2-ioctl.c: In function 'v4l_s_ctrl':
drivers/media/v4l2-core/v4l2-ioctl.c:2290:34: error: storage size of 'ctrls' isn't known
2290 | struct v4l2_ext_controls ctrls;
| ^~~~~
drivers/media/v4l2-core/v4l2-ioctl.c:2295:60: error: passing argument 3 of 'v4l2_s_ctrl' from incompatible pointer type [-Werror=incompatible-pointer-types]
2295 | return v4l2_s_ctrl(vfh, vfh->ctrl_handler, p);
| ^
| |
| struct v4l2_control *
In file included from drivers/media/v4l2-core/v4l2-ioctl.c:24:
include/media/v4l2-ctrls.h:1447:38: note: expected 'struct v4l2_control *' but argument is of type 'struct v4l2_control *'
1447 | struct v4l2_control *ctrl);
| ~~~~~~~~~~~~~~~~~~~~~^~~~
drivers/media/v4l2-core/v4l2-ioctl.c:2297:61: error: passing argument 3 of 'v4l2_s_ctrl' from incompatible pointer type [-Werror=incompatible-pointer-types]
2297 | return v4l2_s_ctrl(NULL, vfd->ctrl_handler, p);
| ^
| |
| struct v4l2_control *
In file included from drivers/media/v4l2-core/v4l2-ioctl.c:24:
include/media/v4l2-ctrls.h:1447:38: note: expected 'struct v4l2_control *' but argument is of type 'struct v4l2_control *'
1447 | struct v4l2_control *ctrl);
| ~~~~~~~~~~~~~~~~~~~~~^~~~
drivers/media/v4l2-core/v4l2-ioctl.c:2299:53: error: passing argument 3 of 'ops->vidioc_s_ctrl' from incompatible pointer type [-Werror=incompatible-pointer-types]
2299 | return ops->vidioc_s_ctrl(file, fh, p);
| ^
| |
| struct v4l2_control *
drivers/media/v4l2-core/v4l2-ioctl.c:2299:53: note: expected 'struct v4l2_control *' but argument is of type 'struct v4l2_control *'
In file included from include/linux/videodev2.h:61,
from drivers/media/v4l2-core/v4l2-ioctl.c:19:
drivers/media/v4l2-core/v4l2-ioctl.c:2303:43: error: invalid use of undefined type 'struct v4l2_control'
2303 | ctrls.which = V4L2_CTRL_ID2WHICH(p->id);
| ^~
include/uapi/linux/videodev2.h:1893:37: note: in definition of macro 'V4L2_CTRL_ID2WHICH'
1893 | #define V4L2_CTRL_ID2WHICH(id) ((id) & 0x0fff0000UL)
| ^~
drivers/media/v4l2-core/v4l2-ioctl.c:2306:20: error: invalid use of undefined type 'struct v4l2_control'
2306 | ctrl.id = p->id;
| ^~
drivers/media/v4l2-core/v4l2-ioctl.c:2307:23: error: invalid use of undefined type 'struct v4l2_control'
2307 | ctrl.value = p->value;
| ^~
In file included from include/asm-generic/ioctl.h:5,
from ./arch/x86/include/generated/uapi/asm/ioctl.h:1,
from include/uapi/linux/ioctl.h:5,
from include/uapi/linux/apm_bios.h:133,
from include/linux/apm_bios.h:9,
from arch/x86/include/uapi/asm/bootparam.h:46,
from arch/x86/include/asm/mem_encrypt.h:18,
from include/linux/mem_encrypt.h:17,
from arch/x86/include/asm/processor-flags.h:6,
from arch/x86/include/asm/processor.h:5,
from arch/x86/include/asm/timex.h:5,
from include/linux/timex.h:67,
from include/linux/time32.h:13,
from include/linux/time.h:60,
from include/linux/compat.h:10,
from drivers/media/v4l2-core/v4l2-ioctl.c:11:
include/uapi/linux/videodev2.h:2661:48: error: invalid application of 'sizeof' to incomplete type 'struct v4l2_control'
2661 | #define VIDIOC_S_CTRL _IOWR('V', 28, struct v4l2_control)
| ^~~~~~
include/uapi/asm-generic/ioctl.h:73:12: note: in definition of macro '_IOC'
73 | ((size) << _IOC_SIZESHIFT))
| ^~~~
include/uapi/asm-generic/ioctl.h:88:72: note: in expansion of macro '_IOC_TYPECHECK'
88 | #define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size)))
| ^~~~~~~~~~~~~~
include/uapi/linux/videodev2.h:2661:33: note: in expansion of macro '_IOWR'
2661 | #define VIDIOC_S_CTRL _IOWR('V', 28, struct v4l2_control)
| ^~~~~
drivers/media/v4l2-core/v4l2-ioctl.c:2308:38: note: in expansion of macro 'VIDIOC_S_CTRL'
2308 | if (!check_ext_ctrls(&ctrls, VIDIOC_S_CTRL))
| ^~~~~~~~~~~~~
include/asm-generic/ioctl.h:13:32: error: array type has incomplete element type 'struct v4l2_control'
13 | ((sizeof(t) == sizeof(t[1]) && \
| ^
include/uapi/asm-generic/ioctl.h:73:12: note: in definition of macro '_IOC'
73 | ((size) << _IOC_SIZESHIFT))
| ^~~~
include/uapi/asm-generic/ioctl.h:88:72: note: in expansion of macro '_IOC_TYPECHECK'
88 | #define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size)))
| ^~~~~~~~~~~~~~
include/uapi/linux/videodev2.h:2661:33: note: in expansion of macro '_IOWR'
2661 | #define VIDIOC_S_CTRL _IOWR('V', 28, struct v4l2_control)
| ^~~~~
drivers/media/v4l2-core/v4l2-ioctl.c:2308:38: note: in expansion of macro 'VIDIOC_S_CTRL'
2308 | if (!check_ext_ctrls(&ctrls, VIDIOC_S_CTRL))
| ^~~~~~~~~~~~~
include/uapi/linux/videodev2.h:2661:48: error: invalid application of 'sizeof' to incomplete type 'struct v4l2_control'
2661 | #define VIDIOC_S_CTRL _IOWR('V', 28, struct v4l2_control)
| ^~~~~~
include/uapi/asm-generic/ioctl.h:73:12: note: in definition of macro '_IOC'
73 | ((size) << _IOC_SIZESHIFT))
| ^~~~
include/uapi/asm-generic/ioctl.h:88:72: note: in expansion of macro '_IOC_TYPECHECK'
88 | #define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size)))
| ^~~~~~~~~~~~~~
include/uapi/linux/videodev2.h:2661:33: note: in expansion of macro '_IOWR'
--
include/media/v4l2-common.h:95:33: warning: 'struct v4l2_queryctrl' declared inside parameter list will not be visible outside of this definition or declaration
95 | int v4l2_ctrl_query_fill(struct v4l2_queryctrl *qctrl,
| ^~~~~~~~~~~~~~
In file included from drivers/media/usb/uvc/uvc_v4l2.c:22:
include/media/v4l2-ctrls.h:58:7: error: redefinition of 'union v4l2_ctrl_ptr'
58 | union v4l2_ctrl_ptr {
| ^~~~~~~~~~~~~
In file included from include/linux/videodev2.h:61,
from drivers/media/usb/uvc/uvc_v4l2.c:15:
include/uapi/linux/videodev2.h:1797:7: note: originally defined here
1797 | union v4l2_ctrl_ptr {
| ^~~~~~~~~~~~~
In file included from drivers/media/usb/uvc/uvc_v4l2.c:22:
include/media/v4l2-ctrls.h:1399:58: warning: 'struct v4l2_queryctrl' declared inside parameter list will not be visible outside of this definition or declaration
1399 | int v4l2_queryctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_queryctrl *qc);
| ^~~~~~~~~~~~~~
include/media/v4l2-ctrls.h:1433:55: warning: 'struct v4l2_control' declared inside parameter list will not be visible outside of this definition or declaration
1433 | int v4l2_g_ctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_control *ctrl);
| ^~~~~~~~~~~~
include/media/v4l2-ctrls.h:1447:24: warning: 'struct v4l2_control' declared inside parameter list will not be visible outside of this definition or declaration
1447 | struct v4l2_control *ctrl);
| ^~~~~~~~~~~~
include/media/v4l2-ctrls.h:1461:56: warning: 'struct v4l2_ext_controls' declared inside parameter list will not be visible outside of this definition or declaration
1461 | struct media_device *mdev, struct v4l2_ext_controls *c);
| ^~~~~~~~~~~~~~~~~
include/media/v4l2-ctrls.h:1477:31: warning: 'struct v4l2_ext_controls' declared inside parameter list will not be visible outside of this definition or declaration
1477 | struct v4l2_ext_controls *c);
| ^~~~~~~~~~~~~~~~~
include/media/v4l2-ctrls.h:1494:29: warning: 'struct v4l2_ext_controls' declared inside parameter list will not be visible outside of this definition or declaration
1494 | struct v4l2_ext_controls *c);
| ^~~~~~~~~~~~~~~~~
In file included from drivers/media/usb/uvc/uvc_v4l2.c:24:
include/media/v4l2-ioctl.h:461:40: warning: 'struct v4l2_queryctrl' declared inside parameter list will not be visible outside of this definition or declaration
461 | struct v4l2_queryctrl *a);
| ^~~~~~~~~~~~~~
include/media/v4l2-ioctl.h:465:37: warning: 'struct v4l2_control' declared inside parameter list will not be visible outside of this definition or declaration
465 | struct v4l2_control *a);
| ^~~~~~~~~~~~
include/media/v4l2-ioctl.h:467:37: warning: 'struct v4l2_control' declared inside parameter list will not be visible outside of this definition or declaration
467 | struct v4l2_control *a);
| ^~~~~~~~~~~~
include/media/v4l2-ioctl.h:469:42: warning: 'struct v4l2_ext_controls' declared inside parameter list will not be visible outside of this definition or declaration
469 | struct v4l2_ext_controls *a);
| ^~~~~~~~~~~~~~~~~
include/media/v4l2-ioctl.h:471:42: warning: 'struct v4l2_ext_controls' declared inside parameter list will not be visible outside of this definition or declaration
471 | struct v4l2_ext_controls *a);
| ^~~~~~~~~~~~~~~~~
include/media/v4l2-ioctl.h:473:44: warning: 'struct v4l2_ext_controls' declared inside parameter list will not be visible outside of this definition or declaration
473 | struct v4l2_ext_controls *a);
| ^~~~~~~~~~~~~~~~~
In file included from drivers/media/usb/uvc/uvc_v4l2.c:26:
drivers/media/usb/uvc/uvcvideo.h:878:32: warning: 'struct v4l2_queryctrl' declared inside parameter list will not be visible outside of this definition or declaration
878 | struct v4l2_queryctrl *v4l2_ctrl);
| ^~~~~~~~~~~~~~
drivers/media/usb/uvc/uvcvideo.h:894:30: warning: 'struct v4l2_ext_controls' declared inside parameter list will not be visible outside of this definition or declaration
894 | struct v4l2_ext_controls *ctrls);
| ^~~~~~~~~~~~~~~~~
drivers/media/usb/uvc/uvcvideo.h:896:42: warning: 'struct v4l2_ext_controls' declared inside parameter list will not be visible outside of this definition or declaration
896 | struct v4l2_ext_controls *ctrls)
| ^~~~~~~~~~~~~~~~~
drivers/media/usb/uvc/uvcvideo.h: In function 'uvc_ctrl_commit':
drivers/media/usb/uvc/uvcvideo.h:898:45: error: passing argument 3 of '__uvc_ctrl_commit' from incompatible pointer type [-Werror=incompatible-pointer-types]
898 | return __uvc_ctrl_commit(handle, 0, ctrls);
| ^~~~~
| |
| struct v4l2_ext_controls *
drivers/media/usb/uvc/uvcvideo.h:894:49: note: expected 'struct v4l2_ext_controls *' but argument is of type 'struct v4l2_ext_controls *'
894 | struct v4l2_ext_controls *ctrls);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
drivers/media/usb/uvc/uvc_v4l2.c: In function 'uvc_ioctl_ctrl_map':
drivers/media/usb/uvc/uvc_v4l2.c:60:14: error: 'V4L2_CTRL_TYPE_INTEGER' undeclared (first use in this function); did you mean 'V4L2_CTRL_TYPE_INTEGER_MENU'?
60 | case V4L2_CTRL_TYPE_INTEGER:
| ^~~~~~~~~~~~~~~~~~~~~~
| V4L2_CTRL_TYPE_INTEGER_MENU
drivers/media/usb/uvc/uvc_v4l2.c:60:14: note: each undeclared identifier is reported only once for each function it appears in
drivers/media/usb/uvc/uvc_v4l2.c: At top level:
drivers/media/usb/uvc/uvc_v4l2.c:977:39: warning: 'struct v4l2_queryctrl' declared inside parameter list will not be visible outside of this definition or declaration
977 | struct v4l2_queryctrl *qc)
| ^~~~~~~~~~~~~~
drivers/media/usb/uvc/uvc_v4l2.c: In function 'uvc_ioctl_queryctrl':
drivers/media/usb/uvc/uvc_v4l2.c:982:43: error: passing argument 2 of 'uvc_query_v4l2_ctrl' from incompatible pointer type [-Werror=incompatible-pointer-types]
982 | return uvc_query_v4l2_ctrl(chain, qc);
| ^~
| |
| struct v4l2_queryctrl *
In file included from drivers/media/usb/uvc/uvc_v4l2.c:26:
drivers/media/usb/uvc/uvcvideo.h:878:48: note: expected 'struct v4l2_queryctrl *' but argument is of type 'struct v4l2_queryctrl *'
878 | struct v4l2_queryctrl *v4l2_ctrl);
| ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
drivers/media/usb/uvc/uvc_v4l2.c: In function 'uvc_ioctl_query_ext_ctrl':
drivers/media/usb/uvc/uvc_v4l2.c:990:16: error: variable 'qc' has initializer but incomplete type
990 | struct v4l2_queryctrl qc = { qec->id };
| ^~~~~~~~~~~~~~
drivers/media/usb/uvc/uvc_v4l2.c:990:38: warning: excess elements in struct initializer
990 | struct v4l2_queryctrl qc = { qec->id };
| ^~~
drivers/media/usb/uvc/uvc_v4l2.c:990:38: note: (near initialization for 'qc')
drivers/media/usb/uvc/uvc_v4l2.c:990:31: error: storage size of 'qc' isn't known
990 | struct v4l2_queryctrl qc = { qec->id };
| ^~
>> drivers/media/usb/uvc/uvc_v4l2.c:990:31: warning: unused variable 'qc' [-Wunused-variable]
drivers/media/usb/uvc/uvc_v4l2.c: At top level:
drivers/media/usb/uvc/uvc_v4l2.c:1015:41: warning: 'struct v4l2_ext_controls' declared inside parameter list will not be visible outside of this definition or declaration
1015 | struct v4l2_ext_controls *ctrls,
| ^~~~~~~~~~~~~~~~~
drivers/media/usb/uvc/uvc_v4l2.c: In function 'uvc_ctrl_check_access':
drivers/media/usb/uvc/uvc_v4l2.c:1018:46: error: invalid use of undefined type 'struct v4l2_ext_controls'
1018 | struct v4l2_ext_control *ctrl = ctrls->controls;
| ^~
drivers/media/usb/uvc/uvc_v4l2.c:1022:30: error: invalid use of undefined type 'struct v4l2_ext_controls'
1022 | for (i = 0; i < ctrls->count; ++ctrl, ++i) {
| ^~
In file included from include/asm-generic/ioctl.h:5,
from ./arch/x86/include/generated/uapi/asm/ioctl.h:1,
from include/uapi/linux/ioctl.h:5,
from include/uapi/linux/apm_bios.h:133,
from include/linux/apm_bios.h:9,
from arch/x86/include/uapi/asm/bootparam.h:46,
from arch/x86/include/asm/mem_encrypt.h:18,
from include/linux/mem_encrypt.h:17,
from arch/x86/include/asm/processor-flags.h:6,
from arch/x86/include/asm/processor.h:5,
from arch/x86/include/asm/timex.h:5,
from include/linux/timex.h:67,
from include/linux/time32.h:13,
from include/linux/time.h:60,
from include/linux/compat.h:10,
from drivers/media/usb/uvc/uvc_v4l2.c:9:
include/uapi/linux/videodev2.h:2694:48: error: invalid application of 'sizeof' to incomplete type 'struct v4l2_ext_controls'
2694 | #define VIDIOC_G_EXT_CTRLS _IOWR('V', 71, struct v4l2_ext_controls)
| ^~~~~~
include/uapi/asm-generic/ioctl.h:73:12: note: in definition of macro '_IOC'
73 | ((size) << _IOC_SIZESHIFT))
| ^~~~
include/uapi/asm-generic/ioctl.h:88:72: note: in expansion of macro '_IOC_TYPECHECK'
88 | #define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size)))
| ^~~~~~~~~~~~~~
include/uapi/linux/videodev2.h:2694:33: note: in expansion of macro '_IOWR'
2694 | #define VIDIOC_G_EXT_CTRLS _IOWR('V', 71, struct v4l2_ext_controls)
| ^~~~~
drivers/media/usb/uvc/uvc_v4l2.c:1024:54: note: in expansion of macro 'VIDIOC_G_EXT_CTRLS'
1024 | ioctl == VIDIOC_G_EXT_CTRLS);
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/ioctl.h:13:32: error: array type has incomplete element type 'struct v4l2_ext_controls'
13 | ((sizeof(t) == sizeof(t[1]) && \
| ^
include/uapi/asm-generic/ioctl.h:73:12: note: in definition of macro '_IOC'
73 | ((size) << _IOC_SIZESHIFT))
| ^~~~
include/uapi/asm-generic/ioctl.h:88:72: note: in expansion of macro '_IOC_TYPECHECK'
88 | #define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size)))
| ^~~~~~~~~~~~~~
include/uapi/linux/videodev2.h:2694:33: note: in expansion of macro '_IOWR'
2694 | #define VIDIOC_G_EXT_CTRLS _IOWR('V', 71, struct v4l2_ext_controls)
| ^~~~~
drivers/media/usb/uvc/uvc_v4l2.c:1024:54: note: in expansion of macro 'VIDIOC_G_EXT_CTRLS'
1024 | ioctl == VIDIOC_G_EXT_CTRLS);
| ^~~~~~~~~~~~~~~~~~
include/uapi/linux/videodev2.h:2694:48: error: invalid application of 'sizeof' to incomplete type 'struct v4l2_ext_controls'
2694 | #define VIDIOC_G_EXT_CTRLS _IOWR('V', 71, struct v4l2_ext_controls)
| ^~~~~~
include/uapi/asm-generic/ioctl.h:73:12: note: in definition of macro '_IOC'
73 | ((size) << _IOC_SIZESHIFT))
| ^~~~
include/uapi/asm-generic/ioctl.h:88:72: note: in expansion of macro '_IOC_TYPECHECK'
88 | #define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size)))
| ^~~~~~~~~~~~~~
include/uapi/linux/videodev2.h:2694:33: note: in expansion of macro '_IOWR'
2694 | #define VIDIOC_G_EXT_CTRLS _IOWR('V', 71, struct v4l2_ext_controls)
| ^~~~~
drivers/media/usb/uvc/uvc_v4l2.c:1024:54: note: in expansion of macro 'VIDIOC_G_EXT_CTRLS'
1024 | ioctl == VIDIOC_G_EXT_CTRLS);
| ^~~~~~~~~~~~~~~~~~
include/uapi/linux/videodev2.h:2694:48: error: invalid application of 'sizeof' to incomplete type 'struct v4l2_ext_controls'
2694 | #define VIDIOC_G_EXT_CTRLS _IOWR('V', 71, struct v4l2_ext_controls)
| ^~~~~~
include/uapi/asm-generic/ioctl.h:73:12: note: in definition of macro '_IOC'
73 | ((size) << _IOC_SIZESHIFT))
| ^~~~
include/uapi/asm-generic/ioctl.h:88:72: note: in expansion of macro '_IOC_TYPECHECK'
88 | #define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size)))
| ^~~~~~~~~~~~~~
include/uapi/linux/videodev2.h:2694:33: note: in expansion of macro '_IOWR'
2694 | #define VIDIOC_G_EXT_CTRLS _IOWR('V', 71, struct v4l2_ext_controls)
| ^~~~~
drivers/media/usb/uvc/uvc_v4l2.c:1024:54: note: in expansion of macro 'VIDIOC_G_EXT_CTRLS'
1024 | ioctl == VIDIOC_G_EXT_CTRLS);
| ^~~~~~~~~~~~~~~~~~
drivers/media/usb/uvc/uvc_v4l2.c:1029:14: error: invalid use of undefined type 'struct v4l2_ext_controls'
1029 | ctrls->error_idx = ioctl == VIDIOC_TRY_EXT_CTRLS ? i : ctrls->count;
| ^~
In file included from include/asm-generic/ioctl.h:5,
from ./arch/x86/include/generated/uapi/asm/ioctl.h:1,
from include/uapi/linux/ioctl.h:5,
from include/uapi/linux/apm_bios.h:133,
from include/linux/apm_bios.h:9,
from arch/x86/include/uapi/asm/bootparam.h:46,
from arch/x86/include/asm/mem_encrypt.h:18,
from include/linux/mem_encrypt.h:17,
from arch/x86/include/asm/processor-flags.h:6,
from arch/x86/include/asm/processor.h:5,
..


vim +/ctrls +2256 drivers/media/v4l2-core/v4l2-ioctl.c

efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2248
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2249 static int v4l_g_ctrl(const struct v4l2_ioctl_ops *ops,
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2250 struct file *file, void *fh, void *arg)
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2251 {
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2252 struct video_device *vfd = video_devdata(file);
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2253 struct v4l2_control *p = arg;
7a3ed2d95e9ef3 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-07-07 2254 struct v4l2_fh *vfh =
7a3ed2d95e9ef3 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-07-07 2255 test_bit(V4L2_FL_USES_V4L2_FH, &vfd->flags) ? fh : NULL;
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 @2256 struct v4l2_ext_controls ctrls;
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2257 struct v4l2_ext_control ctrl;
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2258
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2259 if (vfh && vfh->ctrl_handler)
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2260 return v4l2_g_ctrl(vfh->ctrl_handler, p);
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2261 if (vfd->ctrl_handler)
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2262 return v4l2_g_ctrl(vfd->ctrl_handler, p);
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2263 if (ops->vidioc_g_ctrl)
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2264 return ops->vidioc_g_ctrl(file, fh, p);
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2265 if (ops->vidioc_g_ext_ctrls == NULL)
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2266 return -ENOTTY;
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2267
0f8017bebf3efd drivers/media/v4l2-core/v4l2-ioctl.c Ricardo Ribalda 2015-10-29 2268 ctrls.which = V4L2_CTRL_ID2WHICH(p->id);
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2269 ctrls.count = 1;
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2270 ctrls.controls = &ctrl;
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2271 ctrl.id = p->id;
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2272 ctrl.value = p->value;
861f92cb9160b1 drivers/media/v4l2-core/v4l2-ioctl.c Ricardo Ribalda 2021-06-18 2273 if (check_ext_ctrls(&ctrls, VIDIOC_G_CTRL)) {
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2274 int ret = ops->vidioc_g_ext_ctrls(file, fh, &ctrls);
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2275
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2276 if (ret == 0)
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2277 p->value = ctrl.value;
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2278 return ret;
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2279 }
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2280 return -EINVAL;
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2281 }
efbceecd4522a4 drivers/media/video/v4l2-ioctl.c Hans Verkuil 2012-06-09 2282

:::::: The code at line 2256 was first introduced by commit
:::::: efbceecd4522a41b8442c6b4f68b4508d57d1ccf [media] v4l2-ioctl.c: use the new table for control ioctls

:::::: TO: Hans Verkuil <hans.verkuil@xxxxxxxxx>
:::::: CC: Mauro Carvalho Chehab <mchehab@xxxxxxxxxx>

--
0-DAY CI Kernel Test Service
https://01.org/lkp