CC: l...@lists.linux.dev CC: kbuild-...@lists.01.org BCC: l...@intel.com CC: Linux Memory Management List <linux...@kvack.org> TO: Kanchan Joshi <josh...@samsung.com> CC: Jens Axboe <ax...@kernel.dk> CC: Anuj Gupta <anuj2...@samsung.com> CC: Christoph Hellwig <h...@lst.de>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 38a288f5941ef03752887ad86f2d85442358c99a commit: 86116c2f6fee81a0be72a71cc2f1f7c087df8efa [9659/9759] nvme: wire-up uring-cmd support for io-passthru on char-device. :::::: branch date: 2 days ago :::::: commit date: 2 days ago config: i386-randconfig-c001 (https://download.01.org/0day-ci/archive/20220508/202205081711.ssgxsl9z-...@intel.com/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 5e004fb787698440a387750db7f8028e7cb14cfc) 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 # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=86116c2f6fee81a0be72a71cc2f1f7c087df8efa git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout 86116c2f6fee81a0be72a71cc2f1f7c087df8efa # save the config file COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386 clang-analyzer If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <l...@intel.com> clang-analyzer warnings: (new ones prefixed by >>) ^ drivers/nvme/host/ioctl.c:243:2: note: '?' condition is true if (IS_ERR(req)) ^ include/linux/compiler.h:56:28: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ include/linux/compiler.h:58:69: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^ include/linux/compiler.h:69:2: note: expanded from macro '__trace_if_value' (cond) ? \ ^ drivers/nvme/host/ioctl.c:243:2: note: Taking true branch if (IS_ERR(req)) ^ include/linux/compiler.h:56:23: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ drivers/nvme/host/ioctl.c:244:3: note: Returning without writing to '*result' return PTR_ERR(req); ^ drivers/nvme/host/ioctl.c:360:11: note: Returning from 'nvme_submit_user_cmd' status = nvme_submit_user_cmd(ns ? ns->queue : ctrl->admin_q, &c, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/nvme/host/ioctl.c:365:6: note: 'status' is >= 0 if (status >= 0) { ^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^~~~ drivers/nvme/host/ioctl.c:365:2: note: '?' condition is false if (status >= 0) { ^ include/linux/compiler.h:56:28: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ include/linux/compiler.h:58:31: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^ drivers/nvme/host/ioctl.c:365:6: note: 'status' is >= 0 if (status >= 0) { ^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:86: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^~~~ include/linux/compiler.h:69:3: note: expanded from macro '__trace_if_value' (cond) ? \ ^~~~ drivers/nvme/host/ioctl.c:365:2: note: '?' condition is true if (status >= 0) { ^ include/linux/compiler.h:56:28: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ include/linux/compiler.h:58:69: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^ include/linux/compiler.h:69:2: note: expanded from macro '__trace_if_value' (cond) ? \ ^ drivers/nvme/host/ioctl.c:365:2: note: Taking true branch if (status >= 0) { ^ include/linux/compiler.h:56:23: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ drivers/nvme/host/ioctl.c:366:7: note: Assigned value is garbage or undefined if (put_user(result, &ucmd->result)) ^ arch/x86/include/asm/uaccess.h:225:44: note: expanded from macro 'put_user' #define put_user(x, ptr) ({ might_fault(); do_put_user_call(put_user,x,ptr); }) ^ arch/x86/include/asm/uaccess.h:197:11: note: expanded from macro 'do_put_user_call' __val_pu = (x); \ ^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^~~~ drivers/nvme/host/ioctl.c:390:2: warning: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling] memset(&c, 0, sizeof(c)); ^ arch/x86/include/asm/string_32.h:195:29: note: expanded from macro 'memset' #define memset(s, c, count) __builtin_memset(s, c, count) ^~~~~~~~~~~~~~~~ drivers/nvme/host/ioctl.c:390:2: note: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 memset(&c, 0, sizeof(c)); ^ arch/x86/include/asm/string_32.h:195:29: note: expanded from macro 'memset' #define memset(s, c, count) __builtin_memset(s, c, count) ^~~~~~~~~~~~~~~~ >> drivers/nvme/host/ioctl.c:693:2: warning: Undefined or garbage value >> returned to caller [clang-analyzer-core.uninitialized.UndefReturn] return ret; ^ ~~~ drivers/nvme/host/ioctl.c:688:2: note: 'ret' declared without an initial value int ret; ^~~~~~~ drivers/nvme/host/ioctl.c:690:2: note: Assuming 'ns' is null if (ns) ^ include/linux/compiler.h:56:45: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^~~~ drivers/nvme/host/ioctl.c:690:2: note: '?' condition is false if (ns) ^ include/linux/compiler.h:56:28: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ include/linux/compiler.h:58:31: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^ drivers/nvme/host/ioctl.c:690:6: note: 'ns' is null if (ns) ^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:86: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^~~~ include/linux/compiler.h:69:3: note: expanded from macro '__trace_if_value' (cond) ? \ ^~~~ drivers/nvme/host/ioctl.c:690:2: note: '?' condition is false if (ns) ^ include/linux/compiler.h:56:28: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ include/linux/compiler.h:58:69: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^ include/linux/compiler.h:69:2: note: expanded from macro '__trace_if_value' (cond) ? \ ^ drivers/nvme/host/ioctl.c:690:2: note: Taking false branch if (ns) ^ include/linux/compiler.h:56:23: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ drivers/nvme/host/ioctl.c:693:2: note: Undefined or garbage value returned to caller return ret; ^ ~~~ Suppressed 45 warnings (44 in non-user code, 1 with check filters). 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. 105 warnings generated. net/ipv4/fib_trie.c:215:14: warning: The result of the left shift is undefined due to shifting by '32', which is greater or equal to the width of type 'unsigned long' [clang-analyzer-core.UndefinedBinaryOperatorResult] return (1ul << tn->bits) & ~(1ul); ^ net/ipv4/fib_trie.c:852:26: note: Assuming the condition is false struct key_vector *tp = node_parent(tn); ^ net/ipv4/fib_trie.c:194:25: note: expanded from macro 'node_parent' #define node_parent(tn) rtnl_dereference(tn_info(tn)->parent) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/rtnetlink.h:81:2: note: expanded from macro 'rtnl_dereference' rcu_dereference_protected(p, lockdep_rtnl_is_held()) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/rcupdate.h:594:2: note: expanded from macro 'rcu_dereference_protected' __rcu_dereference_protected((p), __UNIQUE_ID(rcu), (c), __rcu) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) include/linux/rcupdate.h:319:8: note: expanded from macro 'RCU_LOCKDEP_WARN' if ((c) && debug_lockdep_rcu_enabled() && !__warned) { \ ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^~~~ net/ipv4/fib_trie.c:852:26: note: Left side of '&&' is false struct key_vector *tp = node_parent(tn); ^ net/ipv4/fib_trie.c:194:25: note: expanded from macro 'node_parent' #define node_parent(tn) rtnl_dereference(tn_info(tn)->parent) ^ include/linux/rtnetlink.h:81:2: note: expanded from macro 'rtnl_dereference' rcu_dereference_protected(p, lockdep_rtnl_is_held()) ^ include/linux/rcupdate.h:594:2: note: expanded from macro 'rcu_dereference_protected' __rcu_dereference_protected((p), __UNIQUE_ID(rcu), (c), __rcu) ^ include/linux/rcupdate.h:398:2: note: expanded from macro '__rcu_dereference_protected' vim +693 drivers/nvme/host/ioctl.c 86116c2f6fee81 Kanchan Joshi 2022-05-05 680 86116c2f6fee81 Kanchan Joshi 2022-05-05 681 int nvme_ns_head_chr_uring_cmd(struct io_uring_cmd *ioucmd, 86116c2f6fee81 Kanchan Joshi 2022-05-05 682 unsigned int issue_flags) 86116c2f6fee81 Kanchan Joshi 2022-05-05 683 { 86116c2f6fee81 Kanchan Joshi 2022-05-05 684 struct cdev *cdev = file_inode(ioucmd->file)->i_cdev; 86116c2f6fee81 Kanchan Joshi 2022-05-05 685 struct nvme_ns_head *head = container_of(cdev, struct nvme_ns_head, cdev); 86116c2f6fee81 Kanchan Joshi 2022-05-05 686 int srcu_idx = srcu_read_lock(&head->srcu); 86116c2f6fee81 Kanchan Joshi 2022-05-05 687 struct nvme_ns *ns = nvme_find_path(head); 86116c2f6fee81 Kanchan Joshi 2022-05-05 688 int ret; 86116c2f6fee81 Kanchan Joshi 2022-05-05 689 86116c2f6fee81 Kanchan Joshi 2022-05-05 690 if (ns) 86116c2f6fee81 Kanchan Joshi 2022-05-05 691 ret = nvme_ns_uring_cmd(ns, ioucmd, issue_flags); 86116c2f6fee81 Kanchan Joshi 2022-05-05 692 srcu_read_unlock(&head->srcu, srcu_idx); 86116c2f6fee81 Kanchan Joshi 2022-05-05 @693 return ret; 86116c2f6fee81 Kanchan Joshi 2022-05-05 694 } 2405252a680e21 Christoph Hellwig 2021-04-10 695 #endif /* CONFIG_NVME_MULTIPATH */ 2405252a680e21 Christoph Hellwig 2021-04-10 696 -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- kbuild@lists.01.org To unsubscribe send an email to kbuild-le...@lists.01.org