CC: [email protected] CC: [email protected] BCC: [email protected] CC: [email protected] TO: Daniel Thompson <[email protected]>
tree: https://git.linaro.org/people/daniel.thompson/linux.git clang-analyzer/initial_review head: ad6525bf355a301ca52b1dc3639fa340409c79b9 commit: ad6525bf355a301ca52b1dc3639fa340409c79b9 [7/7] [RFC] linux/err.h: Refactor IS_ERR_VALUE(x) to improve clang reasoning :::::: branch date: 3 days ago :::::: commit date: 3 days ago config: riscv-randconfig-c006-20220505 (https://download.01.org/0day-ci/archive/20220507/[email protected]/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 # install riscv cross compiling tool for clang build # apt-get install binutils-riscv64-linux-gnu git remote add daniel-thompson https://git.linaro.org/people/daniel.thompson/linux.git git fetch --no-tags daniel-thompson clang-analyzer/initial_review git checkout ad6525bf355a301ca52b1dc3639fa340409c79b9 # save the config file COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv 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/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) ? \ ^ kernel/workqueue.c:4010:4: note: Taking true branch if (!ctx->pwq_tbl[node]) ^ include/linux/compiler.h:56:23: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ kernel/workqueue.c:4011:5: note: Control jumps to line 4028 goto out_free; ^ kernel/workqueue.c:4030:2: note: Calling 'apply_wqattrs_cleanup' apply_wqattrs_cleanup(ctx); ^~~~~~~~~~~~~~~~~~~~~~~~~~ kernel/workqueue.c:3950:6: note: 'ctx' is non-null if (ctx) { ^ 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)) ^~~~ kernel/workqueue.c:3950:2: note: '?' condition is false if (ctx) { ^ 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)) ^ kernel/workqueue.c:3950:6: note: 'ctx' is non-null if (ctx) { ^ 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) ? \ ^~~~ kernel/workqueue.c:3950:2: note: '?' condition is true if (ctx) { ^ 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) ? \ ^ kernel/workqueue.c:3950:2: note: Taking true branch if (ctx) { ^ include/linux/compiler.h:56:23: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ kernel/workqueue.c:3953:3: note: Loop condition is true. Entering loop body for_each_node(node) ^ include/linux/nodemask.h:514:32: note: expanded from macro 'for_each_node' #define for_each_node(node) for_each_node_state(node, N_POSSIBLE) ^ include/linux/nodemask.h:484:2: note: expanded from macro 'for_each_node_state' for ( (node) = 0; (node) == 0; (node) = 1) ^ kernel/workqueue.c:3953:3: note: Loop condition is false. Execution continues on line 3955 for_each_node(node) ^ include/linux/nodemask.h:514:32: note: expanded from macro 'for_each_node' #define for_each_node(node) for_each_node_state(node, N_POSSIBLE) ^ include/linux/nodemask.h:484:2: note: expanded from macro 'for_each_node_state' for ( (node) = 0; (node) == 0; (node) = 1) ^ kernel/workqueue.c:3957:3: note: 1st function call argument is an uninitialized value free_workqueue_attrs(ctx->attrs); ^ ~~~~~~~~~~ Suppressed 11 warnings (4 in non-user code, 7 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. 10 warnings generated. drivers/hwmon/ina238.c:346:2: warning: Value stored to 'regval' is never read [clang-analyzer-deadcode.DeadStores] regval = clamp_val(val, 0, LONG_MAX); ^ drivers/hwmon/ina238.c:346:2: note: Value stored to 'regval' is never read Suppressed 9 warnings (2 in non-user code, 7 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. 15 warnings generated. >> drivers/hwmon/lineage-pem.c:207:10: warning: Array access (from variable >> 'data') results in a null pointer dereference >> [clang-analyzer-core.NullDereference] val = (data[index] + (data[index+1] << 8)) * 5 / 2; ^ drivers/hwmon/lineage-pem.c:293:2: note: '?' condition is false if (IS_ERR(data)) ^ 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/hwmon/lineage-pem.c:293:2: note: '?' condition is false if (IS_ERR(data)) ^ 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/hwmon/lineage-pem.c:293:2: note: Taking false branch if (IS_ERR(data)) ^ include/linux/compiler.h:56:23: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ drivers/hwmon/lineage-pem.c:296:23: note: Passing null pointer value via 1st parameter 'data' value = pem_get_data(data->data_string, sizeof(data->data_string), ^~~~~~~~~~~~~~~~~ drivers/hwmon/lineage-pem.c:296:10: note: Calling 'pem_get_data' value = pem_get_data(data->data_string, sizeof(data->data_string), ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/hwmon/lineage-pem.c:205:2: note: Control jumps to 'case 4:' at line 206 switch (index) { ^ drivers/hwmon/lineage-pem.c:207:10: note: Array access (from variable 'data') results in a null pointer dereference val = (data[index] + (data[index+1] << 8)) * 5 / 2; ^~~~ drivers/hwmon/lineage-pem.c:210:9: warning: Array access (from variable 'data') results in a null pointer dereference [clang-analyzer-core.NullDereference] val = data[index] * 200; ^ drivers/hwmon/lineage-pem.c:293:2: note: '?' condition is false if (IS_ERR(data)) ^ 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/hwmon/lineage-pem.c:293:2: note: '?' condition is false if (IS_ERR(data)) ^ 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/hwmon/lineage-pem.c:293:2: note: Taking false branch if (IS_ERR(data)) ^ include/linux/compiler.h:56:23: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ drivers/hwmon/lineage-pem.c:296:23: note: Passing null pointer value via 1st parameter 'data' value = pem_get_data(data->data_string, sizeof(data->data_string), ^~~~~~~~~~~~~~~~~ drivers/hwmon/lineage-pem.c:296:10: note: Calling 'pem_get_data' value = pem_get_data(data->data_string, sizeof(data->data_string), ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/hwmon/lineage-pem.c:205:2: note: Control jumps to 'case 6:' at line 209 switch (index) { ^ drivers/hwmon/lineage-pem.c:210:9: note: Array access (from variable 'data') results in a null pointer dereference val = data[index] * 200; ^~~~ drivers/hwmon/lineage-pem.c:213:9: warning: Array access (from variable 'data') results in a null pointer dereference [clang-analyzer-core.NullDereference] val = data[index] * 1000; ^ drivers/hwmon/lineage-pem.c:293:2: note: '?' condition is false if (IS_ERR(data)) ^ 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/hwmon/lineage-pem.c:293:2: note: '?' condition is false if (IS_ERR(data)) ^ include/linux/compiler.h:56:28: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) -- 10 warnings generated. Suppressed 10 warnings (3 in non-user code, 7 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 (10 in non-user code, 7 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. 9 warnings generated. Suppressed 9 warnings (2 in non-user code, 7 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. 9 warnings generated. Suppressed 9 warnings (2 in non-user code, 7 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. 9 warnings generated. Suppressed 9 warnings (2 in non-user code, 7 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. 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. 9 warnings generated. Suppressed 9 warnings (2 in non-user code, 7 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. 9 warnings generated. Suppressed 9 warnings (2 in non-user code, 7 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. 9 warnings generated. Suppressed 9 warnings (2 in non-user code, 7 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. 9 warnings generated. Suppressed 9 warnings (2 in non-user code, 7 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. 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. 10 warnings generated. drivers/of/device.c:59:29: warning: Value stored to 'of_node' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct device_node *node, *of_node = dev->of_node; ^~~~~~~ ~~~~~~~~~~~~ drivers/of/device.c:59:29: note: Value stored to 'of_node' during its initialization is never read struct device_node *node, *of_node = dev->of_node; ^~~~~~~ ~~~~~~~~~~~~ Suppressed 9 warnings (2 in non-user code, 7 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. 9 warnings generated. Suppressed 9 warnings (2 in non-user code, 7 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. 14 warnings generated. drivers/of/property.c:920:19: warning: Access to field 'full_name' results in a dereference of a null pointer [clang-analyzer-core.NullDereference] return kbasename(to_of_node(fwnode)->full_name); ^ include/linux/of.h:161:2: note: expanded from macro 'to_of_node' ({ \ ^ drivers/of/property.c:920:19: note: '?' condition is false return kbasename(to_of_node(fwnode)->full_name); ^ include/linux/of.h:164:3: note: expanded from macro 'to_of_node' is_of_node(__to_of_node_fwnode) ? \ ^ drivers/of/property.c:920:19: note: Access to field 'full_name' results in a dereference of a null pointer return kbasename(to_of_node(fwnode)->full_name); ^ include/linux/of.h:161:2: note: expanded from macro 'to_of_node' ({ \ ^ drivers/of/property.c:926:7: warning: Access to field 'parent' results in a dereference of a null pointer [clang-analyzer-core.NullDereference] if (!to_of_node(fwnode)->parent) ^ include/linux/of.h:161:2: note: expanded from macro 'to_of_node' ({ \ ^ 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/of/property.c:926:7: note: '?' condition is false if (!to_of_node(fwnode)->parent) ^ include/linux/of.h:164:3: note: expanded from macro 'to_of_node' is_of_node(__to_of_node_fwnode) ? \ ^ drivers/of/property.c:926:7: note: Access to field 'parent' results in a dereference of a null pointer if (!to_of_node(fwnode)->parent) ^ include/linux/of.h:161:2: note: expanded from macro 'to_of_node' ({ \ ^ 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)) ^~~~ >> include/uapi/linux/swab.h:176:9: warning: Dereference of null pointer >> (loaded from variable 'p') [clang-analyzer-core.NullDereference] return __swab16(*p); ^ include/uapi/linux/swab.h:105:31: note: expanded from macro '__swab16' (__builtin_constant_p((__u16)(x)) ? \ ^ drivers/of/property.c:886:35: note: Assuming the condition is true const struct device_node *node = to_of_node(fwnode); ^ include/linux/of.h:164:3: note: expanded from macro 'to_of_node' is_of_node(__to_of_node_fwnode) ? \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/of/property.c:886:35: note: '?' condition is true const struct device_node *node = to_of_node(fwnode); ^ include/linux/of.h:164:3: note: expanded from macro 'to_of_node' is_of_node(__to_of_node_fwnode) ? \ ^ drivers/of/property.c:888:6: note: Assuming 'val' is non-null if (!val) ^ 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/of/property.c:888:2: note: '?' condition is false if (!val) ^ 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/of/property.c:888:7: note: 'val' is non-null if (!val) ^ 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/of/property.c:888:2: note: '?' condition is false if (!val) ^ 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/of/property.c:888:2: note: Taking false branch if (!val) ^ include/linux/compiler.h:56:23: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ drivers/of/property.c:892:2: note: Control jumps to 'case 2:' at line 895 switch (elem_size) { ^ drivers/of/property.c:896:10: note: Calling 'of_property_read_u16_array' return of_property_read_u16_array(node, propname, val, nval); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/of.h:1237:12: note: Calling 'of_property_read_variable_u16_array' int ret = of_property_read_variable_u16_array(np, propname, out_values, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/of/property.c:277:2: note: '?' condition is false if (IS_ERR(val)) ^ 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/of/property.c:277:2: note: '?' condition is false if (IS_ERR(val)) ^ 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/of/property.c:277:2: note: Taking false branch if (IS_ERR(val)) ^ include/linux/compiler.h:56:23: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) -- ^ net/ipv4/igmp.c:2104:7: note: 'err' is 0 if (err) ^ 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) ? \ ^~~~ net/ipv4/igmp.c:2104:3: note: '?' condition is false if (err) ^ 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) ? \ ^ net/ipv4/igmp.c:2104:3: note: Taking false branch if (err) ^ include/linux/compiler.h:56:23: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ net/ipv4/igmp.c:2102:14: note: Assuming 'i' is < 'sfcount' for (i = 0; i < sfcount; i++) { ^~~~~~~~~~~ net/ipv4/igmp.c:2102:2: note: Loop condition is true. Entering loop body for (i = 0; i < sfcount; i++) { ^ net/ipv4/igmp.c:2103:9: note: Calling 'ip_mc_add1_src' err = ip_mc_add1_src(pmc, sfmode, &psfsrc[i]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net/ipv4/igmp.c:1973:2: note: Loop condition is true. Entering loop body for (psf = pmc->sources; psf; psf = psf->sf_next) { ^ net/ipv4/igmp.c:1974:7: note: Assuming the condition is false if (psf->sf_inaddr == *psfsrc) ^ 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/igmp.c:1974:3: note: '?' condition is false if (psf->sf_inaddr == *psfsrc) ^ 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)) ^ net/ipv4/igmp.c:1974:3: note: '?' condition is false if (psf->sf_inaddr == *psfsrc) ^ 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) ? \ ^ net/ipv4/igmp.c:1974:3: note: Taking false branch if (psf->sf_inaddr == *psfsrc) ^ include/linux/compiler.h:56:23: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ net/ipv4/igmp.c:1973:36: note: Assigned value is garbage or undefined for (psf = pmc->sources; psf; psf = psf->sf_next) { ^ ~~~~~~~~~~~~ Suppressed 10 warnings (2 in non-user code, 8 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. 9 warnings generated. Suppressed 9 warnings (2 in non-user code, 7 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. 9 warnings generated. Suppressed 9 warnings (2 in non-user code, 7 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. 9 warnings generated. Suppressed 9 warnings (2 in non-user code, 7 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. 9 warnings generated. Suppressed 9 warnings (2 in non-user code, 7 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. 9 warnings generated. Suppressed 9 warnings (2 in non-user code, 7 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. 11 warnings generated. >> net/openvswitch/flow_netlink.c:2366:2: warning: Null pointer passed as 1st >> argument to memory copy function [clang-analyzer-unix.cstring.NullArg] memcpy(acts->actions, (*sfa)->actions, (*sfa)->actions_len); ^ net/openvswitch/flow_netlink.c:2447:2: note: Loop condition is true. Entering loop body nla_for_each_nested(a, attr, rem) { ^ include/net/netlink.h:1932:2: note: expanded from macro 'nla_for_each_nested' nla_for_each_attr(pos, nla_data(nla), nla_len(nla), rem) ^ include/net/netlink.h:1921:2: note: expanded from macro 'nla_for_each_attr' for (pos = head, rem = len; \ ^ net/openvswitch/flow_netlink.c:2449:7: note: Assuming 'type' is not equal to 0 if (!type || type > OVS_SAMPLE_ATTR_MAX || attrs[type]) ^ 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/openvswitch/flow_netlink.c:2449:7: note: Left side of '||' is false if (!type || type > OVS_SAMPLE_ATTR_MAX || attrs[type]) ^ net/openvswitch/flow_netlink.c:2449:16: note: Assuming the condition is false if (!type || type > OVS_SAMPLE_ATTR_MAX || attrs[type]) ^ 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/openvswitch/flow_netlink.c:2449:7: note: Left side of '||' is false if (!type || type > OVS_SAMPLE_ATTR_MAX || attrs[type]) ^ net/openvswitch/flow_netlink.c:2449:3: note: '?' condition is false if (!type || type > OVS_SAMPLE_ATTR_MAX || attrs[type]) ^ 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)) ^ net/openvswitch/flow_netlink.c:2449:8: note: 'type' is not equal to 0 if (!type || type > OVS_SAMPLE_ATTR_MAX || attrs[type]) ^ 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) ? \ ^~~~ net/openvswitch/flow_netlink.c:2449:7: note: Left side of '||' is false if (!type || type > OVS_SAMPLE_ATTR_MAX || attrs[type]) ^ net/openvswitch/flow_netlink.c:2449:7: note: Left side of '||' is false net/openvswitch/flow_netlink.c:2449:3: note: Assuming the condition is false if (!type || type > OVS_SAMPLE_ATTR_MAX || attrs[type]) ^ include/linux/compiler.h:56:44: 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) ? \ ^~~~ net/openvswitch/flow_netlink.c:2449:3: note: '?' condition is false if (!type || type > OVS_SAMPLE_ATTR_MAX || attrs[type]) ^ 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) ? \ ^ net/openvswitch/flow_netlink.c:2449:3: note: Taking false branch if (!type || type > OVS_SAMPLE_ATTR_MAX || attrs[type]) ^ include/linux/compiler.h:56:23: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ net/openvswitch/flow_netlink.c:2447:2: note: Loop condition is false. Execution continues on line 2453 nla_for_each_nested(a, attr, rem) { ^ include/net/netlink.h:1932:2: note: expanded from macro 'nla_for_each_nested' nla_for_each_attr(pos, nla_data(nla), nla_len(nla), rem) ^ include/net/netlink.h:1921:2: note: expanded from macro 'nla_for_each_attr' for (pos = head, rem = len; \ ^ net/openvswitch/flow_netlink.c:2453:2: note: Assuming 'rem' is 0 vim +/data +207 drivers/hwmon/lineage-pem.c 502b5a01992090 Guenter Roeck 2010-09-29 200 502b5a01992090 Guenter Roeck 2010-09-29 201 static long pem_get_data(u8 *data, int len, int index) 502b5a01992090 Guenter Roeck 2010-09-29 202 { 502b5a01992090 Guenter Roeck 2010-09-29 203 long val; 502b5a01992090 Guenter Roeck 2010-09-29 204 502b5a01992090 Guenter Roeck 2010-09-29 205 switch (index) { 502b5a01992090 Guenter Roeck 2010-09-29 206 case PEM_DATA_VOUT_LSB: 502b5a01992090 Guenter Roeck 2010-09-29 @207 val = (data[index] + (data[index+1] << 8)) * 5 / 2; 502b5a01992090 Guenter Roeck 2010-09-29 208 break; 502b5a01992090 Guenter Roeck 2010-09-29 209 case PEM_DATA_CURRENT: 502b5a01992090 Guenter Roeck 2010-09-29 210 val = data[index] * 200; 502b5a01992090 Guenter Roeck 2010-09-29 211 break; 502b5a01992090 Guenter Roeck 2010-09-29 212 case PEM_DATA_TEMP: 502b5a01992090 Guenter Roeck 2010-09-29 213 val = data[index] * 1000; 502b5a01992090 Guenter Roeck 2010-09-29 214 break; 502b5a01992090 Guenter Roeck 2010-09-29 215 case PEM_DATA_TEMP_MAX: 502b5a01992090 Guenter Roeck 2010-09-29 216 val = 97 * 1000; /* 97 degrees C per datasheet */ 502b5a01992090 Guenter Roeck 2010-09-29 217 break; 502b5a01992090 Guenter Roeck 2010-09-29 218 case PEM_DATA_TEMP_CRIT: 502b5a01992090 Guenter Roeck 2010-09-29 219 val = 107 * 1000; /* 107 degrees C per datasheet */ 502b5a01992090 Guenter Roeck 2010-09-29 220 break; 502b5a01992090 Guenter Roeck 2010-09-29 221 default: 502b5a01992090 Guenter Roeck 2010-09-29 222 WARN_ON_ONCE(1); 502b5a01992090 Guenter Roeck 2010-09-29 223 val = 0; 502b5a01992090 Guenter Roeck 2010-09-29 224 } 502b5a01992090 Guenter Roeck 2010-09-29 225 return val; 502b5a01992090 Guenter Roeck 2010-09-29 226 } 502b5a01992090 Guenter Roeck 2010-09-29 227 :::::: The code at line 207 was first introduced by commit :::::: 502b5a0199209001b34b623132ea313790acbd5d hwmon: Add support for Lineage Compact Power Line PEM devices :::::: TO: Guenter Roeck <[email protected]> :::::: CC: Guenter Roeck <[email protected]> -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
