CC: [email protected]
CC: [email protected]
CC: [email protected]
TO: Arnd Bergmann <[email protected]>
CC: Mauro Carvalho Chehab <[email protected]>
CC: [email protected]
CC: Hans Verkuil <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   a4e6f95a891ac08bd09d62e3e6dae239b150f4c1
commit: 8dbcc3fa387c16abfc88a628cf528c439c91b332 media: v4l2: prepare 
compat-ioctl rework
date:   11 months ago
:::::: branch date: 7 hours ago
:::::: commit date: 11 months ago
config: arm-randconfig-c002-20210927 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
dc6e8dfdfe7efecfda318d43a06fae18b40eb498)
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8dbcc3fa387c16abfc88a628cf528c439c91b332
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 8dbcc3fa387c16abfc88a628cf528c439c91b332
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm 
clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
               ^
   include/uapi/asm-generic/ioctl.h:94:23: note: expanded from macro '_IOC_DIR'
   #define _IOC_DIR(nr)            (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK)
                                   ^
   drivers/media/v4l2-core/v4l2-ioctl.c:3275:2: note: Taking true branch
           if (_IOC_DIR(cmd) != _IOC_NONE) {
           ^
   drivers/media/v4l2-core/v4l2-ioctl.c:3276:7: note: Assuming the condition is 
true
                   if (ioc_size <= sizeof(sbuf)) {
                       ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/v4l2-core/v4l2-ioctl.c:3276:3: note: Taking true branch
                   if (ioc_size <= sizeof(sbuf)) {
                   ^
   drivers/media/v4l2-core/v4l2-ioctl.c:3286:9: note: Calling 'video_get_user'
                   err = video_get_user((void __user *)arg, parg, cmd,
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/v4l2-core/v4l2-ioctl.c:3121:6: note: Assuming the condition is 
false
           if (!(_IOC_DIR(cmd) & _IOC_WRITE)) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/v4l2-core/v4l2-ioctl.c:3121:2: note: Taking false branch
           if (!(_IOC_DIR(cmd) & _IOC_WRITE)) {
           ^
   drivers/media/v4l2-core/v4l2-ioctl.c:3134:2: note: Taking false branch
           if (v4l2_is_known_ioctl(real_cmd)) {
           ^
   drivers/media/v4l2-core/v4l2-ioctl.c:3142:6: note: 'cmd' is equal to 
'real_cmd'
           if (cmd == real_cmd) {
               ^~~
   drivers/media/v4l2-core/v4l2-ioctl.c:3142:2: note: Taking true branch
           if (cmd == real_cmd) {
           ^
   drivers/media/v4l2-core/v4l2-ioctl.c:3143:7: note: Calling 'copy_from_user'
                   if (copy_from_user(parg, (void __user *)arg, n))
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/uaccess.h:191:2: note: Taking true branch
           if (likely(check_copy_size(to, n, false)))
           ^
   include/linux/uaccess.h:192:7: note: Calling '_copy_from_user'
                   n = _copy_from_user(to, from, n);
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/uaccess.h:157:6: note: Left side of '&&' is true
           if (!should_fail_usercopy() && likely(access_ok(from, n))) {
               ^
   include/linux/uaccess.h:157:33: note: Assuming the condition is false
           if (!should_fail_usercopy() && likely(access_ok(from, n))) {
                                          ^
   include/linux/compiler.h:77:20: note: expanded from macro 'likely'
   # define likely(x)      __builtin_expect(!!(x), 1)
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/uaccess.h:157:2: note: Taking false branch
           if (!should_fail_usercopy() && likely(access_ok(from, n))) {
           ^
   include/linux/uaccess.h:161:6: note: Assuming 'res' is 0
           if (unlikely(res))
               ^
   include/linux/compiler.h:78:40: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                             ^~~~
   include/linux/uaccess.h:161:2: note: Taking false branch
           if (unlikely(res))
           ^
   include/linux/uaccess.h:192:7: note: Returning from '_copy_from_user'
                   n = _copy_from_user(to, from, n);
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/v4l2-core/v4l2-ioctl.c:3143:7: note: Returning from 
'copy_from_user'
                   if (copy_from_user(parg, (void __user *)arg, n))
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/v4l2-core/v4l2-ioctl.c:3143:3: note: Taking false branch
                   if (copy_from_user(parg, (void __user *)arg, n))
                   ^
   drivers/media/v4l2-core/v4l2-ioctl.c:3182:7: note: 'err' is 0
           if (!err && n < _IOC_SIZE(real_cmd))
                ^~~
   drivers/media/v4l2-core/v4l2-ioctl.c:3182:6: note: Left side of '&&' is true
           if (!err && n < _IOC_SIZE(real_cmd))
               ^
   drivers/media/v4l2-core/v4l2-ioctl.c:3182:2: note: Taking false branch
           if (!err && n < _IOC_SIZE(real_cmd))
           ^
   drivers/media/v4l2-core/v4l2-ioctl.c:3184:2: note: Returning zero (loaded 
from 'err'), which participates in a condition later
           return err;
           ^~~~~~~~~~
   drivers/media/v4l2-core/v4l2-ioctl.c:3286:9: note: Returning from 
'video_get_user'
                   err = video_get_user((void __user *)arg, parg, cmd,
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/v4l2-core/v4l2-ioctl.c:3288:7: note: 'err' is 0
                   if (err)
                       ^~~
   drivers/media/v4l2-core/v4l2-ioctl.c:3288:3: note: Taking false branch
                   if (err)
                   ^
   drivers/media/v4l2-core/v4l2-ioctl.c:3292:8: note: Calling 'check_array_args'
           err = check_array_args(cmd, parg, &array_size, &user_ptr, 
&kernel_ptr);
                 
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/v4l2-core/v4l2-ioctl.c:3032:2: note: Control jumps to 'case 
3222820425:'  at line 3071
           switch (cmd) {
           ^
   drivers/media/v4l2-core/v4l2-ioctl.c:3074:20: note: The left operand of '!=' 
is a garbage value
                   if (ctrls->count != 0) {
                       ~~~~~~~~~~~~ ^
>> drivers/media/v4l2-core/v4l2-ioctl.c:3308:3: warning: Value stored to 'err' 
>> is never read [clang-analyzer-deadcode.DeadStores]
                   err = -EFAULT;
                   ^     ~~~~~~~
   drivers/media/v4l2-core/v4l2-ioctl.c:3308:3: note: Value stored to 'err' is 
never read
                   err = -EFAULT;
                   ^     ~~~~~~~
   Suppressed 18 warnings (18 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   17 warnings generated.
   Suppressed 17 warnings (17 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   19 warnings generated.
   Suppressed 19 warnings (19 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   4 warnings generated.
   fs/configfs/file.c:149:10: warning: Value stored to 'len' during its 
initialization is never read [clang-analyzer-deadcode.DeadStores]
           ssize_t len = min_t(size_t, count, PAGE_SIZE);
                   ^~~
   fs/configfs/file.c:149:10: note: Value stored to 'len' during its 
initialization is never read
           ssize_t len = min_t(size_t, count, PAGE_SIZE);
                   ^~~
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   18 warnings generated.
   Suppressed 18 warnings (18 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   4 warnings generated.
   fs/configfs/symlink.c:72:3: warning: Call to function 'strcpy' is insecure 
as it does not provide bounding of the memory buffer. Replace unbounded copy 
functions with analogous functions that support length arguments such as 
'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
                   strcpy(s,"../");
                   ^~~~~~
   fs/configfs/symlink.c:72:3: note: Call to function 'strcpy' is insecure as 
it does not provide bounding of the memory buffer. Replace unbounded copy 
functions with analogous functions that support length arguments such as 
'strlcpy'. CWE-119
                   strcpy(s,"../");
                   ^~~~~~
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   19 warnings generated.
   Suppressed 19 warnings (19 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   19 warnings generated.
   Suppressed 19 warnings (19 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   19 warnings generated.
   Suppressed 19 warnings (19 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   19 warnings generated.
   Suppressed 19 warnings (19 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   19 warnings generated.
   Suppressed 19 warnings (19 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   19 warnings generated.
   Suppressed 19 warnings (19 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   17 warnings generated.
   Suppressed 17 warnings (17 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   17 warnings generated.
   Suppressed 17 warnings (17 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   drivers/i2c/i2c-core-smbus.c:101:2: warning: Undefined or garbage value 
returned to caller [clang-analyzer-core.uninitialized.UndefReturn]
           return (status < 0) ? status : data.byte;
           ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/i2c/i2c-core-smbus.c:98:11: note: Calling 'i2c_smbus_xfer'
           status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/i2c/i2c-core-smbus.c:539:6: note: Assuming 'res' is not equal to 0
           if (res)
               ^~~
   drivers/i2c/i2c-core-smbus.c:539:2: note: Taking true branch
           if (res)
           ^
   drivers/i2c/i2c-core-smbus.c:540:3: note: Returning without writing to 
'data->byte'
                   return res;
                   ^
   drivers/i2c/i2c-core-smbus.c:98:11: note: Returning from 'i2c_smbus_xfer'
           status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/i2c/i2c-core-smbus.c:101:10: note: Assuming 'status' is >= 0
           return (status < 0) ? status : data.byte;
                   ^~~~~~~~~~
   drivers/i2c/i2c-core-smbus.c:101:9: note: '?' condition is false
           return (status < 0) ? status : data.byte;
                  ^
   drivers/i2c/i2c-core-smbus.c:101:2: note: Undefined or garbage value 
returned to caller
           return (status < 0) ? status : data.byte;

vim +/err +3308 drivers/media/v4l2-core/v4l2-ioctl.c

c8ef1a6076bfb98 drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2019-12-16  3257  
fc0a80798576f80 drivers/media/video/v4l2-ioctl.c     Laurent Pinchart      
2010-07-12  3258  long
c8ef1a6076bfb98 drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2019-12-16  3259  video_usercopy(struct file *file, unsigned int orig_cmd, 
unsigned long arg,
fc0a80798576f80 drivers/media/video/v4l2-ioctl.c     Laurent Pinchart      
2010-07-12  3260            v4l2_kioctl func)
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3261  {
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3262     char    sbuf[128];
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3263     void    *mbuf = NULL;
1d94aa369da073a drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2010-04-06  3264     void    *parg = (void *)arg;
069b747931f13ed drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-12-30  3265     long    err  = -EINVAL;
d14e6d76ebf740f drivers/media/video/v4l2-ioctl.c     Pawel Osciak          
2010-12-23  3266     bool    has_array_args;
043f77edae8bd50 drivers/media/v4l2-core/v4l2-ioctl.c Hans Verkuil          
2017-05-10  3267     bool    always_copy = false;
d14e6d76ebf740f drivers/media/video/v4l2-ioctl.c     Pawel Osciak          
2010-12-23  3268     size_t  array_size = 0;
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3269     void __user *user_ptr = NULL;
d14e6d76ebf740f drivers/media/video/v4l2-ioctl.c     Pawel Osciak          
2010-12-23  3270     void    **kernel_ptr = NULL;
c8ef1a6076bfb98 drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2019-12-16  3271     unsigned int cmd = video_translate_cmd(orig_cmd);
f8a695c4b43d02c drivers/media/v4l2-core/v4l2-ioctl.c Mauro Carvalho Chehab 
2018-03-26  3272     const size_t ioc_size = _IOC_SIZE(cmd);
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3273  
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3274     /*  Copy arguments into temp kernel buffer  */
337f9d205972bfe drivers/media/video/v4l2-ioctl.c     Trent Piepho          
2009-03-04  3275     if (_IOC_DIR(cmd) != _IOC_NONE) {
f8a695c4b43d02c drivers/media/v4l2-core/v4l2-ioctl.c Mauro Carvalho Chehab 
2018-03-26  3276             if (ioc_size <= sizeof(sbuf)) {
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3277                     parg = sbuf;
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3278             } else {
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3279                     /* too big to allocate from stack */
f8a695c4b43d02c drivers/media/v4l2-core/v4l2-ioctl.c Mauro Carvalho Chehab 
2018-03-26  3280                     mbuf = kvmalloc(ioc_size, GFP_KERNEL);
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3281                     if (NULL == mbuf)
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3282                             return -ENOMEM;
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3283                     parg = mbuf;
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3284             }
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3285  
8dbcc3fa387c16a drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2020-10-30  3286             err = video_get_user((void __user *)arg, parg, cmd,
8dbcc3fa387c16a drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2020-10-30  3287                                  orig_cmd, &always_copy);
c8ef1a6076bfb98 drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2019-12-16  3288             if (err)
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3289                     goto out;
1dc8b65c944e5cf drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2020-01-08  3290     }
19c96e4b7d3c800 drivers/media/video/v4l2-ioctl.c     Trent Piepho          
2009-03-04  3291  
d14e6d76ebf740f drivers/media/video/v4l2-ioctl.c     Pawel Osciak          
2010-12-23  3292     err = check_array_args(cmd, parg, &array_size, &user_ptr, 
&kernel_ptr);
d14e6d76ebf740f drivers/media/video/v4l2-ioctl.c     Pawel Osciak          
2010-12-23  3293     if (err < 0)
d14e6d76ebf740f drivers/media/video/v4l2-ioctl.c     Pawel Osciak          
2010-12-23  3294             goto out;
d14e6d76ebf740f drivers/media/video/v4l2-ioctl.c     Pawel Osciak          
2010-12-23  3295     has_array_args = err;
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3296  
d14e6d76ebf740f drivers/media/video/v4l2-ioctl.c     Pawel Osciak          
2010-12-23  3297     if (has_array_args) {
d14e6d76ebf740f drivers/media/video/v4l2-ioctl.c     Pawel Osciak          
2010-12-23  3298             /*
d14e6d76ebf740f drivers/media/video/v4l2-ioctl.c     Pawel Osciak          
2010-12-23  3299              * When adding new types of array args, make sure 
that the
d14e6d76ebf740f drivers/media/video/v4l2-ioctl.c     Pawel Osciak          
2010-12-23  3300              * parent argument to ioctl (which contains the 
pointer to the
d14e6d76ebf740f drivers/media/video/v4l2-ioctl.c     Pawel Osciak          
2010-12-23  3301              * array) fits into sbuf (so that mbuf will still 
remain
d14e6d76ebf740f drivers/media/video/v4l2-ioctl.c     Pawel Osciak          
2010-12-23  3302              * unused up to here).
d14e6d76ebf740f drivers/media/video/v4l2-ioctl.c     Pawel Osciak          
2010-12-23  3303              */
758d90e161382c1 drivers/media/v4l2-core/v4l2-ioctl.c Tomasz Figa           
2017-06-19  3304             mbuf = kvmalloc(array_size, GFP_KERNEL);
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3305             err = -ENOMEM;
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3306             if (NULL == mbuf)
d14e6d76ebf740f drivers/media/video/v4l2-ioctl.c     Pawel Osciak          
2010-12-23  3307                     goto out_array_args;
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20 @3308             err = -EFAULT;
8dbcc3fa387c16a drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2020-10-30  3309             if (in_compat_syscall())
8dbcc3fa387c16a drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2020-10-30  3310                     err = v4l2_compat_get_array_args(file, 
mbuf, user_ptr,
8dbcc3fa387c16a drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2020-10-30  3311                                                      
array_size, orig_cmd,
8dbcc3fa387c16a drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2020-10-30  3312                                                      parg);
8dbcc3fa387c16a drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2020-10-30  3313             else
8dbcc3fa387c16a drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2020-10-30  3314                     err = copy_from_user(mbuf, user_ptr, 
array_size) ?
8dbcc3fa387c16a drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2020-10-30  3315                                                             
-EFAULT : 0;
8dbcc3fa387c16a drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2020-10-30  3316             if (err)
d14e6d76ebf740f drivers/media/video/v4l2-ioctl.c     Pawel Osciak          
2010-12-23  3317                     goto out_array_args;
d14e6d76ebf740f drivers/media/video/v4l2-ioctl.c     Pawel Osciak          
2010-12-23  3318             *kernel_ptr = mbuf;
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3319     }
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3320  
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3321     /* Handles IOCTL */
fc0a80798576f80 drivers/media/video/v4l2-ioctl.c     Laurent Pinchart      
2010-07-12  3322     err = func(file, cmd, parg);
181a4a2d5a0a7b4 drivers/media/v4l2-core/v4l2-ioctl.c Hans Verkuil          
2018-01-30  3323     if (err == -ENOTTY || err == -ENOIOCTLCMD) {
02bbb814d8db7b6 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2012-02-08  3324             err = -ENOTTY;
181a4a2d5a0a7b4 drivers/media/v4l2-core/v4l2-ioctl.c Hans Verkuil          
2018-01-30  3325             goto out;
181a4a2d5a0a7b4 drivers/media/v4l2-core/v4l2-ioctl.c Hans Verkuil          
2018-01-30  3326     }
181a4a2d5a0a7b4 drivers/media/v4l2-core/v4l2-ioctl.c Hans Verkuil          
2018-01-30  3327  
aa32f4c0bcce7da drivers/media/v4l2-core/v4l2-ioctl.c Hans Verkuil          
2013-12-16  3328     if (err == 0) {
aa32f4c0bcce7da drivers/media/v4l2-core/v4l2-ioctl.c Hans Verkuil          
2013-12-16  3329             if (cmd == VIDIOC_DQBUF)
aa32f4c0bcce7da drivers/media/v4l2-core/v4l2-ioctl.c Hans Verkuil          
2013-12-16  3330                     
trace_v4l2_dqbuf(video_devdata(file)->minor, parg);
aa32f4c0bcce7da drivers/media/v4l2-core/v4l2-ioctl.c Hans Verkuil          
2013-12-16  3331             else if (cmd == VIDIOC_QBUF)
aa32f4c0bcce7da drivers/media/v4l2-core/v4l2-ioctl.c Hans Verkuil          
2013-12-16  3332                     
trace_v4l2_qbuf(video_devdata(file)->minor, parg);
aa32f4c0bcce7da drivers/media/v4l2-core/v4l2-ioctl.c Hans Verkuil          
2013-12-16  3333     }
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3334  
d14e6d76ebf740f drivers/media/video/v4l2-ioctl.c     Pawel Osciak          
2010-12-23  3335     if (has_array_args) {
ba2d35c14b6fc55 drivers/media/v4l2-core/v4l2-ioctl.c Hans Verkuil          
2014-03-17  3336             *kernel_ptr = (void __force *)user_ptr;
8dbcc3fa387c16a drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2020-10-30  3337             if (in_compat_syscall()) {
8dbcc3fa387c16a drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2020-10-30  3338                     int put_err;
8dbcc3fa387c16a drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2020-10-30  3339  
8dbcc3fa387c16a drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2020-10-30  3340                     put_err = v4l2_compat_put_array_args(file, 
user_ptr, mbuf,
8dbcc3fa387c16a drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2020-10-30  3341                                                          
array_size, orig_cmd,
8dbcc3fa387c16a drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2020-10-30  3342                                                          parg);
8dbcc3fa387c16a drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2020-10-30  3343                     if (put_err)
8dbcc3fa387c16a drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2020-10-30  3344                             err = put_err;
8dbcc3fa387c16a drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2020-10-30  3345             } else if (copy_to_user(user_ptr, mbuf, 
array_size)) {
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3346                     err = -EFAULT;
8dbcc3fa387c16a drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2020-10-30  3347             }
d14e6d76ebf740f drivers/media/video/v4l2-ioctl.c     Pawel Osciak          
2010-12-23  3348             goto out_array_args;
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3349     }
043f77edae8bd50 drivers/media/v4l2-core/v4l2-ioctl.c Hans Verkuil          
2017-05-10  3350     /*
043f77edae8bd50 drivers/media/v4l2-core/v4l2-ioctl.c Hans Verkuil          
2017-05-10  3351      * Some ioctls can return an error, but still have valid
043f77edae8bd50 drivers/media/v4l2-core/v4l2-ioctl.c Hans Verkuil          
2017-05-10  3352      * results that must be returned.
043f77edae8bd50 drivers/media/v4l2-core/v4l2-ioctl.c Hans Verkuil          
2017-05-10  3353      */
043f77edae8bd50 drivers/media/v4l2-core/v4l2-ioctl.c Hans Verkuil          
2017-05-10  3354     if (err < 0 && !always_copy)
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3355             goto out;
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3356  
d14e6d76ebf740f drivers/media/video/v4l2-ioctl.c     Pawel Osciak          
2010-12-23  3357  out_array_args:
8dbcc3fa387c16a drivers/media/v4l2-core/v4l2-ioctl.c Arnd Bergmann         
2020-10-30  3358     if (video_put_user((void __user *)arg, parg, cmd, 
orig_cmd))
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3359             err = -EFAULT;
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3360  out:
758d90e161382c1 drivers/media/v4l2-core/v4l2-ioctl.c Tomasz Figa           
2017-06-19  3361     kvfree(mbuf);
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3362     return err;
35ea11ff84719b1 drivers/media/video/v4l2-ioctl.c     Hans Verkuil          
2008-07-20  3363  }
fc0a80798576f80 drivers/media/video/v4l2-ioctl.c     Laurent Pinchart      
2010-07-12  3364  

:::::: The code at line 3308 was first introduced by commit
:::::: 35ea11ff84719b1bfab2909903a9640a86552fd1 V4L/DVB (8430): videodev: move 
some functions from v4l2-dev.h to v4l2-common.h or v4l2-ioctl.h

:::::: TO: Hans Verkuil <[email protected]>
:::::: CC: Mauro Carvalho Chehab <[email protected]>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to