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]

Reply via email to