CC: [email protected]
CC: [email protected]
In-Reply-To: 
<eaee0947c813b04b77ee8364724d1a406dccc33b.1634029538.git.krzysztof.adam...@nokia.com>
References: 
<eaee0947c813b04b77ee8364724d1a406dccc33b.1634029538.git.krzysztof.adam...@nokia.com>
TO: Krzysztof Adamski <[email protected]>

Hi Krzysztof,

I love your patch! Perhaps something to improve:

[auto build test WARNING on groeck-staging/hwmon-next]
[cannot apply to robh/for-next v5.16-rc1 next-20211115]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    
https://github.com/0day-ci/linux/commits/Krzysztof-Adamski/Add-per-channel-properies-support-in-tmp421/20211012-173142
base:   
https://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git 
hwmon-next
:::::: branch date: 5 weeks ago
:::::: commit date: 5 weeks ago
config: arm-randconfig-c002-20211013 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
b6a8c695542b2987eb9a203d5663a0740cb4725f)
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 arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # 
https://github.com/0day-ci/linux/commit/4a0f8262fe071b0b27c6fba7455627f3c5a5209e
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Krzysztof-Adamski/Add-per-channel-properies-support-in-tmp421/20211012-173142
        git checkout 4a0f8262fe071b0b27c6fba7455627f3c5a5209e
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm 
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/hid.h:1005:28: note: Assuming 'bmap' is null
           if (unlikely(c > limit || !bmap)) {
                                     ^
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   include/linux/hid.h:1005:2: note: Taking true branch
           if (unlikely(c > limit || !bmap)) {
           ^
   include/linux/hid.h:1006:3: note: Assuming the condition is true
                   pr_warn_ratelimited("%s: Invalid code %d type %d\n",
                   ^
   include/linux/printk.h:656:2: note: expanded from macro 'pr_warn_ratelimited'
           printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/printk.h:639:6: note: expanded from macro 'printk_ratelimited'
           if (__ratelimit(&_rs))                                          \
               ^~~~~~~~~~~~~~~~~
   include/linux/ratelimit_types.h:41:28: note: expanded from macro 
'__ratelimit'
   #define __ratelimit(state) ___ratelimit(state, __func__)
                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/hid.h:1006:3: note: Taking true branch
                   pr_warn_ratelimited("%s: Invalid code %d type %d\n",
                   ^
   include/linux/printk.h:656:2: note: expanded from macro 'pr_warn_ratelimited'
           printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
           ^
   include/linux/printk.h:639:2: note: expanded from macro 'printk_ratelimited'
           if (__ratelimit(&_rs))                                          \
           ^
   include/linux/hid.h:1006:3: note: Loop condition is false.  Exiting loop
                   pr_warn_ratelimited("%s: Invalid code %d type %d\n",
                   ^
   include/linux/printk.h:656:2: note: expanded from macro 'pr_warn_ratelimited'
           printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
           ^
   include/linux/printk.h:640:3: note: expanded from macro 'printk_ratelimited'
                   printk(fmt, ##__VA_ARGS__);                             \
                   ^
   include/linux/printk.h:446:26: note: expanded from macro 'printk'
   #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
                            ^
   include/linux/printk.h:417:3: note: expanded from macro 'printk_index_wrap'
                   __printk_index_emit(_fmt, NULL, NULL);                  \
                   ^
   include/linux/printk.h:392:34: note: expanded from macro 
'__printk_index_emit'
   #define __printk_index_emit(...) do {} while (0)
                                    ^
   include/linux/hid.h:1007:9: note: Access to field 'name' results in a 
dereference of a null pointer (loaded from variable 'input')
                                       input->name, c, type);
                                       ^
   include/linux/printk.h:656:49: note: expanded from macro 
'pr_warn_ratelimited'
           printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
                                                          ^~~~~~~~~~~
   include/linux/printk.h:640:17: note: expanded from macro 'printk_ratelimited'
                   printk(fmt, ##__VA_ARGS__);                             \
                                 ^~~~~~~~~~~
   include/linux/printk.h:446:60: note: expanded from macro 'printk'
   #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
                                                              ^~~~~~~~~~~
   include/linux/printk.h:418:19: note: expanded from macro 'printk_index_wrap'
                   _p_func(_fmt, ##__VA_ARGS__);                           \
                                   ^~~~~~~~~~~
   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.
   3 warnings generated.
   drivers/media/i2c/imx258.c:781:3: warning: Value stored to 'ret' is never 
read [clang-analyzer-deadcode.DeadStores]
                   ret = imx258_write_reg(imx258, IMX258_REG_TEST_PATTERN,
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/i2c/imx258.c:781:3: note: Value stored to 'ret' is never read
                   ret = imx258_write_reg(imx258, IMX258_REG_TEST_PATTERN,
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   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.
   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.
   4 warnings generated.
>> drivers/hwmon/tmp421.c:178:3: warning: Undefined or garbage value returned 
>> to caller [clang-analyzer-core.uninitialized.UndefReturn]
                   return err;
                   ^
   drivers/hwmon/tmp421.c:410:6: note: Assuming 'data' is non-null
           if (!data)
               ^~~~~
   drivers/hwmon/tmp421.c:410:2: note: Taking false branch
           if (!data)
           ^
   drivers/hwmon/tmp421.c:413:2: note: Loop condition is false.  Exiting loop
           mutex_init(&data->update_lock);
           ^
   include/linux/mutex.h:101:32: note: expanded from macro 'mutex_init'
   #define mutex_init(mutex)                                               \
                                                                           ^
   drivers/hwmon/tmp421.c:414:6: note: Assuming field 'of_node' is null
           if (client->dev.of_node)
               ^~~~~~~~~~~~~~~~~~~
   drivers/hwmon/tmp421.c:414:2: note: Taking false branch
           if (client->dev.of_node)
           ^
   drivers/hwmon/tmp421.c:421:14: note: Assuming 'i' is >= field 'channels'
           for (i = 0; i < data->channels; i++) {
                       ^~~~~~~~~~~~~~~~~~
   drivers/hwmon/tmp421.c:421:2: note: Loop condition is false. Execution 
continues on line 426
           for (i = 0; i < data->channels; i++) {
           ^
   drivers/hwmon/tmp421.c:427:6: note: 'err' is 0
           if (err)
               ^~~
   drivers/hwmon/tmp421.c:427:2: note: Taking false branch
           if (err)
           ^
   drivers/hwmon/tmp421.c:430:8: note: Calling 'tmp421_init_client'
           err = tmp421_init_client(data);
                 ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/hwmon/tmp421.c:258:6: note: Assuming 'config' is >= 0
           if (config < 0) {
               ^~~~~~~~~~
   drivers/hwmon/tmp421.c:258:2: note: Taking false branch
           if (config < 0) {
           ^
   drivers/hwmon/tmp421.c:267:6: note: Assuming 'config' is equal to 
'config_orig'
           if (config != config_orig) {
               ^~~~~~~~~~~~~~~~~~~~~
   drivers/hwmon/tmp421.c:267:2: note: Taking false branch
           if (config != config_orig) {
           ^
   drivers/hwmon/tmp421.c:272:9: note: Calling 'tmp421_enable_channels'
           return tmp421_enable_channels(data);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/hwmon/tmp421.c:170:2: note: 'err' declared without an initial value
           int err;
           ^~~~~~~
   drivers/hwmon/tmp421.c:176:6: note: Assuming 'cfg' is < 0
           if (cfg < 0) {
               ^~~~~~~
   drivers/hwmon/tmp421.c:176:2: note: Taking true branch
           if (cfg < 0) {
           ^
   drivers/hwmon/tmp421.c:177:3: note: Loop condition is false.  Exiting loop
                   dev_err(dev, "error reading register, can't disable 
channels\n");
                   ^
   include/linux/dev_printk.h:144:2: note: expanded from macro 'dev_err'
           dev_printk_index_wrap(_dev_err, KERN_ERR, dev, dev_fmt(fmt), 
##__VA_ARGS__)
           ^
   include/linux/dev_printk.h:109:3: note: expanded from macro 
'dev_printk_index_wrap'
                   dev_printk_index_emit(level, fmt);                      \
                   ^
   include/linux/dev_printk.h:105:2: note: expanded from macro 
'dev_printk_index_emit'
           printk_index_subsys_emit("%s %s: ", level, fmt)
           ^
   include/linux/printk.h:413:2: note: expanded from macro 
'printk_index_subsys_emit'
           __printk_index_emit(fmt, level, subsys_fmt_prefix)
           ^
   include/linux/printk.h:392:34: note: expanded from macro 
'__printk_index_emit'
   #define __printk_index_emit(...) do {} while (0)
                                    ^
   drivers/hwmon/tmp421.c:178:3: note: Undefined or garbage value returned to 
caller
                   return err;
                   ^      ~~~
   Suppressed 3 warnings (2 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.
   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.
   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.

vim +178 drivers/hwmon/tmp421.c

9410700b881f867 Andre Prendel     2009-09-15  167  
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  168  static int 
tmp421_enable_channels(struct tmp421_data *data)
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  169  {
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  170       int err;
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  171       struct i2c_client 
*client = data->client;
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  172       struct device *dev = 
&client->dev;
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  173       int cfg = 
i2c_smbus_read_byte_data(client, TMP421_CONFIG_REG_2);
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  174       int i;
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  175  
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  176       if (cfg < 0) {
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  177               dev_err(dev, 
"error reading register, can't disable channels\n");
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12 @178               return err;
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  179       }
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  180  
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  181       cfg &= 
~TMP421_CONFIG_REG_REN_MASK;
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  182       for (i = 0; i < 
data->channels; i++)
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  183               if 
(data->channel[i].enabled)
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  184                       cfg |= 
TMP421_CONFIG_REG_REN(i);
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  185  
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  186       err = 
i2c_smbus_write_byte_data(client, TMP421_CONFIG_REG_2, cfg);
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  187       if (err < 0)
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  188               dev_err(dev, 
"error writing register, can't disable channels\n");
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  189  
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  190       return err;
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  191  }
4a0f8262fe071b0 Krzysztof Adamski 2021-10-12  192  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to