CC: [email protected]
CC: [email protected]
CC: [email protected]
TO: Thomas Bogendoerfer <[email protected]>
CC: Christoph Hellwig <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   4634129ad9fdc89d10b597fc6f8f4336fb61e105
commit: 04324f44cb69a03fdc8f2ee52386a4fdf6a0043b MIPS: Remove get_fs/set_fs
date:   9 months ago
:::::: branch date: 22 hours ago
:::::: commit date: 9 months ago
config: mips-randconfig-c004-20211227 
(https://download.01.org/0day-ci/archive/20220110/[email protected]/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
511726c64d3b6cca66f7c54d457d586aa3129f67)
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 mips cross compiling tool for clang build
        # apt-get install binutils-mips-linux-gnu
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=04324f44cb69a03fdc8f2ee52386a4fdf6a0043b
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 04324f44cb69a03fdc8f2ee52386a4fdf6a0043b
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=mips 
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 >>)
   1 warning generated.
   Suppressed 1 warnings (1 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.
   drivers/tty/tty_io.c:2641:18: warning: The left operand of '&' is a garbage 
value [clang-analyzer-core.UndefinedBinaryOperatorResult]
           flags = v.flags & ASYNC_DEPRECATED;
                           ^
   drivers/tty/tty_io.c:2688:2: note: Taking false branch
           if (tty_paranoia_check(tty, file_inode(file), "tty_ioctl"))
           ^
   drivers/tty/tty_io.c:2696:2: note: 'Default' branch taken. Execution 
continues on line 2716
           switch (cmd) {
           ^
   drivers/tty/tty_io.c:2716:2: note: Control jumps to 'case 21637:'  at line 
2789
           switch (cmd) {
           ^
   drivers/tty/tty_io.c:2790:10: note: Calling 'tty_tiocsserial'
                   return tty_tiocsserial(tty, p);
                          ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/tty_io.c:2638:6: note: Calling 'copy_from_user'
           if (copy_from_user(&v, ss, sizeof(*ss)))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   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:7: note: Calling 'should_fail_usercopy'
           if (!should_fail_usercopy() && likely(access_ok(from, n))) {
                ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/fault-inject-usercopy.h:18:49: note: Returning zero, which 
participates in a condition later
   static inline bool should_fail_usercopy(void) { return false; }
                                                   ^~~~~~~~~~~~
   include/linux/uaccess.h:157:7: note: Returning from 'should_fail_usercopy'
           if (!should_fail_usercopy() && likely(access_ok(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:45:22: note: expanded from macro 'likely'
   #  define likely(x)     (__branch_check__(x, 1, __builtin_constant_p(x)))
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler.h:33:32: note: expanded from macro '__branch_check__'
                           ______r = __builtin_expect(!!(x), expect);      \
                                                       ^~~~
   include/linux/uaccess.h:157:2: note: Taking true branch
           if (!should_fail_usercopy() && likely(access_ok(from, n))) {
           ^
   include/linux/uaccess.h:159:9: note: Calling 'raw_copy_from_user'
                   res = raw_copy_from_user(to, from, n);
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/mips/include/asm/uaccess.h:472:2: note: Returning without writing to 
'to->flags'
           return __cu_len_r;
           ^
   include/linux/uaccess.h:159:9: note: Returning from 'raw_copy_from_user'
                   res = raw_copy_from_user(to, from, n);
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/uaccess.h:161:6: note: Assuming 'res' is 0, which participates 
in a condition later
           if (unlikely(res))
               ^
   include/linux/compiler.h:48:24: note: expanded from macro 'unlikely'
   #  define unlikely(x)   (__branch_check__(x, 0, __builtin_constant_p(x)))
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler.h:33:32: note: expanded from macro '__branch_check__'
                           ______r = __builtin_expect(!!(x), expect);      \
                                                       ^~~~
   include/linux/uaccess.h:161:2: note: Taking false branch
           if (unlikely(res))
           ^
   include/linux/uaccess.h:163:2: note: Returning without writing to 'to->flags'
           return res;
           ^
   include/linux/uaccess.h:163:2: note: Returning zero (loaded from 'res'), 
which participates in a condition later
           return res;
           ^~~~~~~~~~
   include/linux/uaccess.h:192:7: note: Returning from '_copy_from_user'
                   n = _copy_from_user(to, from, n);
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/uaccess.h:193:2: note: Returning without writing to 'to->flags'
           return n;
           ^
   include/linux/uaccess.h:193:2: note: Returning zero (loaded from 'n'), which 
participates in a condition later
           return n;
           ^~~~~~~~
   drivers/tty/tty_io.c:2638:6: note: Returning from 'copy_from_user'
           if (copy_from_user(&v, ss, sizeof(*ss)))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/tty_io.c:2638:2: note: Taking false branch
           if (copy_from_user(&v, ss, sizeof(*ss)))
           ^
   drivers/tty/tty_io.c:2641:18: note: The left operand of '&' is a garbage 
value
           flags = v.flags & ASYNC_DEPRECATED;
                   ~~~~~~~ ^
   Suppressed 1 warnings (1 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/fcntl.c:301:8: warning: Assigned value is garbage or undefined 
>> [clang-analyzer-core.uninitialized.Assign]
                   hint = (enum rw_hint) h;
                        ^
   fs/fcntl.c:480:1: note: Calling '__do_sys_fcntl64'
   SYSCALL_DEFINE3(fcntl64, unsigned int, fd, unsigned int, cmd,
   ^
   include/linux/syscalls.h:216:36: note: expanded from macro 'SYSCALL_DEFINE3'
   #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/syscalls.h:225:2: note: expanded from macro 'SYSCALL_DEFINEx'
           __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/syscalls.h:246:14: note: expanded from macro 
'__SYSCALL_DEFINEx'
                   long ret = __do_sys##name(__MAP(x,__SC_CAST,__VA_ARGS__));\
                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   note: expanded from here
   fs/fcntl.c:488:6: note: Assuming field 'file' is non-null
           if (!f.file)
               ^~~~~~~
   fs/fcntl.c:488:2: note: Taking false branch
           if (!f.file)
           ^
   fs/fcntl.c:491:6: note: Assuming the condition is false
           if (unlikely(f.file->f_mode & FMODE_PATH)) {
               ^
   include/linux/compiler.h:48:24: note: expanded from macro 'unlikely'
   #  define unlikely(x)   (__branch_check__(x, 0, __builtin_constant_p(x)))
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler.h:23:50: note: expanded from macro '__branch_check__'
   #define __branch_check__(x, expect, is_constant) ({                     \
                                                    ^~~~~~~~~~~~~~~~~~~~~~~~
   fs/fcntl.c:491:2: note: Taking false branch
           if (unlikely(f.file->f_mode & FMODE_PATH)) {
           ^
   fs/fcntl.c:497:6: note: Assuming 'err' is 0
           if (err)
               ^~~
   fs/fcntl.c:497:2: note: Taking false branch
           if (err)
           ^
   fs/fcntl.c:500:2: note: Control jumps to the 'default' case at line 519
           switch (cmd) {
           ^
   fs/fcntl.c:520:9: note: Calling 'do_fcntl'
                   err = do_fcntl(fd, cmd, arg, f.file);
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/fcntl.c:337:2: note: Control jumps to 'case 1038:'  at line 434
           switch (cmd) {
           ^
   fs/fcntl.c:435:9: note: Calling 'fcntl_rw_hint'
                   err = fcntl_rw_hint(filp, cmd, arg);
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/fcntl.c:290:2: note: 'h' declared without an initial value
           u64 h;
           ^~~~~
   fs/fcntl.c:292:2: note: Control jumps to 'case 1038:'  at line 298
           switch (cmd) {
           ^
   fs/fcntl.c:299:7: note: Calling 'copy_from_user'
                   if (copy_from_user(&h, argp, sizeof(h)))
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   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:7: note: Calling 'should_fail_usercopy'
           if (!should_fail_usercopy() && likely(access_ok(from, n))) {
                ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/fault-inject-usercopy.h:18:49: note: Returning zero, which 
participates in a condition later
   static inline bool should_fail_usercopy(void) { return false; }
                                                   ^~~~~~~~~~~~
   include/linux/uaccess.h:157:7: note: Returning from 'should_fail_usercopy'
           if (!should_fail_usercopy() && likely(access_ok(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:40: note: Assuming the condition is false
           if (!should_fail_usercopy() && likely(access_ok(from, n))) {
                                                 ^
   arch/mips/include/asm/uaccess.h:86:2: note: expanded from macro 'access_ok'
           likely(__access_ok((addr), (size)))
           ^
   include/linux/compiler.h:45:22: note: expanded from macro 'likely'
   #  define likely(x)     (__branch_check__(x, 1, __builtin_constant_p(x)))
                            ^
   include/linux/compiler.h:33:32: note: expanded from macro '__branch_check__'
                           ______r = __builtin_expect(!!(x), expect);      \
                                                       ^
   include/linux/compiler.h:45:39: note: expanded from macro 'likely'
   #  define likely(x)     (__branch_check__(x, 1, __builtin_constant_p(x)))
                            ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler.h:33:34: note: expanded from macro '__branch_check__'
                           ______r = __builtin_expect(!!(x), expect);      \
                                                         ^
   include/linux/uaccess.h:157:40: note: Assuming the condition is false
           if (!should_fail_usercopy() && likely(access_ok(from, n))) {
                                                 ^
   arch/mips/include/asm/uaccess.h:86:2: note: expanded from macro 'access_ok'
--
   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.
   3 warnings generated.
   drivers/mfd/max8997-irq.c:248:3: warning: Value stored to 'ret' is never 
read [clang-analyzer-deadcode.DeadStores]
                   ret = max8997_read_reg(max8997->i2c, MAX8997_REG_FLASHSTATUS,
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mfd/max8997-irq.c:248:3: note: Value stored to 'ret' is never read
                   ret = max8997_read_reg(max8997->i2c, MAX8997_REG_FLASHSTATUS,
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   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.
   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.
   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.
   1 warning generated.
   Suppressed 1 warnings (1 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.
   1 warning generated.
   Suppressed 1 warnings (1 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.
   1 warning generated.
   Suppressed 1 warnings (1 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.
   1 warning generated.
   Suppressed 1 warnings (1 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.
   1 warning generated.
   Suppressed 1 warnings (1 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.
   drivers/tty/serial/fsl_lpuart.c:1220:33: warning: The result of the left 
shift is undefined because the right operand is negative 
[clang-analyzer-core.UndefinedBinaryOperatorResult]
           sport->rx_dma_rng_buf_len = (1 << (fls(sport->rx_dma_rng_buf_len) - 
1));
                                          ^
   drivers/tty/serial/fsl_lpuart.c:2788:6: note: Assuming field 'suspended' is 0
           if (sport->port.suspended && !irq_wake)
               ^~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/fsl_lpuart.c:2788:28: note: Left side of '&&' is false
           if (sport->port.suspended && !irq_wake)
                                     ^
   drivers/tty/serial/fsl_lpuart.c:2791:2: note: Taking true branch
           if (lpuart_is_32(sport))
           ^
   drivers/tty/serial/fsl_lpuart.c:2796:6: note: Assuming field 
'lpuart_dma_rx_use' is true
           if (sport->lpuart_dma_rx_use) {
               ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/fsl_lpuart.c:2796:2: note: Taking true branch
           if (sport->lpuart_dma_rx_use) {
           ^
   drivers/tty/serial/fsl_lpuart.c:2797:7: note: Assuming 'irq_wake' is true
                   if (irq_wake) {
                       ^~~~~~~~
   drivers/tty/serial/fsl_lpuart.c:2797:3: note: Taking true branch
                   if (irq_wake) {
                   ^
   drivers/tty/serial/fsl_lpuart.c:2798:9: note: Calling 'lpuart_start_rx_dma'
                           if (!lpuart_start_rx_dma(sport))
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/fsl_lpuart.c:1211:9: note: Assuming the condition is false
           bits = (termios->c_cflag & CSIZE) == CS7 ? 9 : 10;
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/fsl_lpuart.c:1211:9: note: '?' condition is false
   drivers/tty/serial/fsl_lpuart.c:1212:6: note: Assuming the condition is false
           if (termios->c_cflag & PARENB)
               ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/fsl_lpuart.c:1212:2: note: Taking false branch
           if (termios->c_cflag & PARENB)
           ^
   drivers/tty/serial/fsl_lpuart.c:1220:33: note: The result of the left shift 
is undefined because the right operand is negative
           sport->rx_dma_rng_buf_len = (1 << (fls(sport->rx_dma_rng_buf_len) - 
1));
                                          ^  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 1 warnings (1 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.
   1 warning generated.
   Suppressed 1 warnings (1 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.
   1 warning generated.
   Suppressed 1 warnings (1 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.
   drivers/tty/serial/mvebu-uart.c:513:4: warning: Value stored to 'baud' is 
never read [clang-analyzer-deadcode.DeadStores]
                           baud = uart_get_baud_rate(port, old, NULL, 0, 
230400);
                           ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/mvebu-uart.c:513:4: note: Value stored to 'baud' is never 
read
                           baud = uart_get_baud_rate(port, old, NULL, 0, 
230400);
                           ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 1 warnings (1 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.
   1 warning generated.
   Suppressed 1 warnings (1 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.
>> drivers/tty/tty_ioctl.c:537:23: warning: Assigned value is garbage or 
>> undefined [clang-analyzer-core.uninitialized.Assign]
           termios.c_cc[VERASE] = tmp.sg_erase;
                                ^
   drivers/tty/tty_ioctl.c:842:2: note: Control jumps to the 'default' case at 
line 881
           switch (cmd) {
           ^
   drivers/tty/tty_ioctl.c:883:10: note: Calling 'tty_mode_ioctl'
                   return tty_mode_ioctl(tty, file, cmd, arg);
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/tty_ioctl.c:671:9: note: Assuming 'file' is equal to null
           BUG_ON(file == NULL);
                  ^
   arch/mips/include/asm/bug.h:34:44: note: expanded from macro 'BUG_ON'
   #define BUG_ON(C) __BUG_ON((unsigned long)(C))
                                              ^
   drivers/tty/tty_ioctl.c:673:6: note: Assuming field 'type' is not equal to 
TTY_DRIVER_TYPE_PTY
           if (tty->driver->type == TTY_DRIVER_TYPE_PTY &&
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/tty_ioctl.c:673:47: note: Left side of '&&' is false
           if (tty->driver->type == TTY_DRIVER_TYPE_PTY &&
                                                        ^
   drivers/tty/tty_ioctl.c:679:2: note: Control jumps to 'case 29706:'  at line 
684
           switch (cmd) {
           ^
   drivers/tty/tty_ioctl.c:685:10: note: Calling 'set_sgttyb'
                   return set_sgttyb(real_tty, (struct sgttyb __user *) arg);
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/tty_ioctl.c:529:6: note: Assuming 'retval' is 0
           if (retval)
               ^~~~~~
   drivers/tty/tty_ioctl.c:529:2: note: Taking false branch
           if (retval)
           ^
   drivers/tty/tty_ioctl.c:532:6: note: Calling 'copy_from_user'
           if (copy_from_user(&tmp, sgttyb, sizeof(tmp)))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/uaccess.h:191:6: note: Assuming the condition is false
           if (likely(check_copy_size(to, n, false)))
               ^
   include/linux/compiler.h:45:22: note: expanded from macro 'likely'
   #  define likely(x)     (__branch_check__(x, 1, __builtin_constant_p(x)))
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler.h:33:32: note: expanded from macro '__branch_check__'
                           ______r = __builtin_expect(!!(x), expect);      \
                                                       ^~~~
   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:7: note: Calling 'should_fail_usercopy'
           if (!should_fail_usercopy() && likely(access_ok(from, n))) {
                ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/fault-inject-usercopy.h:18:49: note: Returning zero, which 
participates in a condition later
   static inline bool should_fail_usercopy(void) { return false; }
                                                   ^~~~~~~~~~~~
   include/linux/uaccess.h:157:7: note: Returning from 'should_fail_usercopy'
           if (!should_fail_usercopy() && likely(access_ok(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:40: note: Assuming the condition is false
           if (!should_fail_usercopy() && likely(access_ok(from, n))) {
                                                 ^
   arch/mips/include/asm/uaccess.h:86:2: note: expanded from macro 'access_ok'
           likely(__access_ok((addr), (size)))
           ^
   include/linux/compiler.h:45:22: note: expanded from macro 'likely'
   #  define likely(x)     (__branch_check__(x, 1, __builtin_constant_p(x)))
                            ^
   include/linux/compiler.h:33:32: note: expanded from macro '__branch_check__'
                           ______r = __builtin_expect(!!(x), expect);      \
                                                       ^
   include/linux/compiler.h:45:39: note: expanded from macro 'likely'
   #  define likely(x)     (__branch_check__(x, 1, __builtin_constant_p(x)))
                            ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler.h:33:34: note: expanded from macro '__branch_check__'
                           ______r = __builtin_expect(!!(x), expect);      \
                                                         ^
   include/linux/uaccess.h:157:40: note: Assuming the condition is false
           if (!should_fail_usercopy() && likely(access_ok(from, n))) {
                                                 ^
   arch/mips/include/asm/uaccess.h:86:2: note: expanded from macro 'access_ok'
           likely(__access_ok((addr), (size)))
           ^
   include/linux/compiler.h:45:22: note: expanded from macro 'likely'
   #  define likely(x)     (__branch_check__(x, 1, __builtin_constant_p(x)))
                            ^
   include/linux/compiler.h:33:32: note: expanded from macro '__branch_check__'
                           ______r = __builtin_expect(!!(x), expect);      \
                                                       ^
   include/linux/compiler.h:45:66: note: expanded from macro 'likely'
   #  define likely(x)     (__branch_check__(x, 1, __builtin_constant_p(x)))
                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
   include/linux/compiler.h:35:19: note: expanded from macro '__branch_check__'
                                                expect, is_constant);      \
                                                        ^~~~~~~~~~~
   include/linux/uaccess.h:157:2: note: Taking true branch
           if (!should_fail_usercopy() && likely(access_ok(from, n))) {

vim +301 fs/fcntl.c

c75b1d9421f80f Jens Axboe 2017-06-27  283  
c75b1d9421f80f Jens Axboe 2017-06-27  284  static long fcntl_rw_hint(struct 
file *file, unsigned int cmd,
c75b1d9421f80f Jens Axboe 2017-06-27  285                         unsigned long 
arg)
c75b1d9421f80f Jens Axboe 2017-06-27  286  {
c75b1d9421f80f Jens Axboe 2017-06-27  287       struct inode *inode = 
file_inode(file);
e200327708e691 Ben Dooks  2019-10-15  288       u64 __user *argp = (u64 __user 
*)arg;
c75b1d9421f80f Jens Axboe 2017-06-27  289       enum rw_hint hint;
5657cb0797c4ab Jens Axboe 2017-06-28  290       u64 h;
c75b1d9421f80f Jens Axboe 2017-06-27  291  
c75b1d9421f80f Jens Axboe 2017-06-27  292       switch (cmd) {
c75b1d9421f80f Jens Axboe 2017-06-27  293       case F_GET_FILE_RW_HINT:
5657cb0797c4ab Jens Axboe 2017-06-28  294               h = 
file_write_hint(file);
5657cb0797c4ab Jens Axboe 2017-06-28  295               if (copy_to_user(argp, 
&h, sizeof(*argp)))
c75b1d9421f80f Jens Axboe 2017-06-27  296                       return -EFAULT;
c75b1d9421f80f Jens Axboe 2017-06-27  297               return 0;
c75b1d9421f80f Jens Axboe 2017-06-27  298       case F_SET_FILE_RW_HINT:
5657cb0797c4ab Jens Axboe 2017-06-28  299               if (copy_from_user(&h, 
argp, sizeof(h)))
c75b1d9421f80f Jens Axboe 2017-06-27  300                       return -EFAULT;
5657cb0797c4ab Jens Axboe 2017-06-28 @301               hint = (enum rw_hint) h;
c75b1d9421f80f Jens Axboe 2017-06-27  302               if 
(!rw_hint_valid(hint))
c75b1d9421f80f Jens Axboe 2017-06-27  303                       return -EINVAL;
c75b1d9421f80f Jens Axboe 2017-06-27  304  
c75b1d9421f80f Jens Axboe 2017-06-27  305               
spin_lock(&file->f_lock);
c75b1d9421f80f Jens Axboe 2017-06-27  306               file->f_write_hint = 
hint;
c75b1d9421f80f Jens Axboe 2017-06-27  307               
spin_unlock(&file->f_lock);
c75b1d9421f80f Jens Axboe 2017-06-27  308               return 0;
c75b1d9421f80f Jens Axboe 2017-06-27  309       case F_GET_RW_HINT:
5657cb0797c4ab Jens Axboe 2017-06-28  310               h = inode->i_write_hint;
5657cb0797c4ab Jens Axboe 2017-06-28  311               if (copy_to_user(argp, 
&h, sizeof(*argp)))
c75b1d9421f80f Jens Axboe 2017-06-27  312                       return -EFAULT;
c75b1d9421f80f Jens Axboe 2017-06-27  313               return 0;
c75b1d9421f80f Jens Axboe 2017-06-27  314       case F_SET_RW_HINT:
5657cb0797c4ab Jens Axboe 2017-06-28  315               if (copy_from_user(&h, 
argp, sizeof(h)))
c75b1d9421f80f Jens Axboe 2017-06-27  316                       return -EFAULT;
5657cb0797c4ab Jens Axboe 2017-06-28  317               hint = (enum rw_hint) h;
c75b1d9421f80f Jens Axboe 2017-06-27  318               if 
(!rw_hint_valid(hint))
c75b1d9421f80f Jens Axboe 2017-06-27  319                       return -EINVAL;
c75b1d9421f80f Jens Axboe 2017-06-27  320  
c75b1d9421f80f Jens Axboe 2017-06-27  321               inode_lock(inode);
c75b1d9421f80f Jens Axboe 2017-06-27  322               inode->i_write_hint = 
hint;
c75b1d9421f80f Jens Axboe 2017-06-27  323               inode_unlock(inode);
c75b1d9421f80f Jens Axboe 2017-06-27  324               return 0;
c75b1d9421f80f Jens Axboe 2017-06-27  325       default:
c75b1d9421f80f Jens Axboe 2017-06-27  326               return -EINVAL;
c75b1d9421f80f Jens Axboe 2017-06-27  327       }
c75b1d9421f80f Jens Axboe 2017-06-27  328  }
c75b1d9421f80f Jens Axboe 2017-06-27  329  

:::::: The code at line 301 was first introduced by commit
:::::: 5657cb0797c4ab303f5782442095319bd971257b fs/fcntl: use 
copy_to/from_user() for u64 types

:::::: TO: Jens Axboe <[email protected]>
:::::: CC: Jens Axboe <[email protected]>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to