* fs/fcntl.c:301:8: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
@ 2022-01-09 18:40 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-01-09 18:40 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 29498 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
CC: Christoph Hellwig <hch@lst.de>
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/202201100235.j9W82E92-lkp(a)intel.com/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 <lkp@intel.com>
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 <axboe@kernel.dk>
:::::: CC: Jens Axboe <axboe@kernel.dk>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-01-09 18:40 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-01-09 18:40 fs/fcntl.c:301:8: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign] kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.