CC: [email protected]
CC: [email protected]
In-Reply-To: <[email protected]>
References: <[email protected]>
TO: Marek Vasut <[email protected]>
TO: [email protected]
CC: Marek Vasut <[email protected]>
CC: Matti Vaittinen <[email protected]>, Matti Vaittinen 
<[email protected]>
CC: Michael Turquette <[email protected]>
CC: Rob Herring <[email protected]>
CC: Stephen Boyd <[email protected]>
CC: [email protected]
CC: [email protected]

Hi Marek,

I love your patch! Perhaps something to improve:

[auto build test WARNING on clk/clk-next]
[also build test WARNING on v5.17-rc4 next-20220215]
[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/Marek-Vasut/dt-bindings-clk-Introduce-critical-clocks-property/20220215-164757
base:   https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git clk-next
:::::: branch date: 12 hours ago
:::::: commit date: 12 hours ago
config: i386-randconfig-c001-20220214 
(https://download.01.org/0day-ci/archive/20220216/[email protected]/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 
37f422f4ac31c8b8041c6b62065263314282dab6)
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://github.com/0day-ci/linux/commit/aded04bc3dec13df3f940621d94d84e32ff8a5ea
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Marek-Vasut/dt-bindings-clk-Introduce-critical-clocks-property/20220215-164757
        git checkout aded04bc3dec13df3f940621d94d84e32ff8a5ea
        # save the config file to linux build tree
        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 <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
   drivers/net/ethernet/mellanox/mlx5/core/fs_core.c:1893:22: note: Passing 
'dest' via 1st parameter 'dest'
                   if (!dest_is_valid(&dest[i], flow_act, ft))
                                      ^~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/fs_core.c:1893:8: note: Calling 
'dest_is_valid'
                   if (!dest_is_valid(&dest[i], flow_act, ft))
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/fs_core.c:1656:6: note: Assuming 
'dest' is null
           if (dest && (dest->type == MLX5_FLOW_DESTINATION_TYPE_COUNTER))
               ^~~~
   drivers/net/ethernet/mellanox/mlx5/core/fs_core.c:1656:11: note: Left side 
of '&&' is false
           if (dest && (dest->type == MLX5_FLOW_DESTINATION_TYPE_COUNTER))
                    ^
   drivers/net/ethernet/mellanox/mlx5/core/fs_core.c:1659:6: note: Assuming the 
condition is false
           if (!(action & MLX5_FLOW_CONTEXT_ACTION_FWD_DEST))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/fs_core.c:1659:2: note: Taking false 
branch
           if (!(action & MLX5_FLOW_CONTEXT_ACTION_FWD_DEST))
           ^
   drivers/net/ethernet/mellanox/mlx5/core/fs_core.c:1662:6: note: Assuming 
'ignore_level' is true
           if (ignore_level) {
               ^~~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/fs_core.c:1662:2: note: Taking true 
branch
           if (ignore_level) {
           ^
   drivers/net/ethernet/mellanox/mlx5/core/fs_core.c:1663:7: note: Assuming 
field 'type' is equal to FS_FT_FDB
                   if (ft->type != FS_FT_FDB &&
                       ^~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/fs_core.c:1663:29: note: Left side 
of '&&' is false
                   if (ft->type != FS_FT_FDB &&
                                             ^
   drivers/net/ethernet/mellanox/mlx5/core/fs_core.c:1667:7: note: Access to 
field 'type' results in a dereference of a null pointer (loaded from variable 
'dest')
                   if (dest->type == MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE &&
                       ^~~~
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   drivers/rtc/rtc-pcf2127.c:686:3: warning: Value stored to 'ret' is never 
read [clang-analyzer-deadcode.DeadStores]
                   ret = devm_rtc_nvmem_register(pcf2127->rtc, &nvmem_cfg);
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/rtc/rtc-pcf2127.c:686:3: note: Value stored to 'ret' is never read
                   ret = devm_rtc_nvmem_register(pcf2127->rtc, &nvmem_cfg);
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   drivers/rtc/rtc-rs5c372.c:743:2: warning: Value stored to 'addr' is never 
read [clang-analyzer-deadcode.DeadStores]
           addr   = RS5C_ADDR(RS5C_REG_CTRL1);
           ^
   drivers/rtc/rtc-rs5c372.c:743:2: note: Value stored to 'addr' is never read
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   18 warnings generated.
   drivers/clk/clk.c:1952:3: warning: Value stored to 'best_parent_rate' is 
never read [clang-analyzer-deadcode.DeadStores]
                   best_parent_rate = parent->rate;
                   ^                  ~~~~~~~~~~~~
   drivers/clk/clk.c:1952:3: note: Value stored to 'best_parent_rate' is never 
read
                   best_parent_rate = parent->rate;
                   ^                  ~~~~~~~~~~~~
>> drivers/clk/clk.c:3905:4: warning: Value stored to 'ret' is never read 
>> [clang-analyzer-deadcode.DeadStores]
                           ret = of_property_read_u32_index(np, 
"critical-clocks",
                           ^     
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/clk/clk.c:3905:4: note: Value stored to 'ret' is never read
                           ret = of_property_read_u32_index(np, 
"critical-clocks",
                           ^     
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 16 warnings (15 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.
   4 warnings generated.
   drivers/clk/clk-divider.c:330:9: warning: Division by zero 
[clang-analyzer-core.DivideZero]
                   now = DIV_ROUND_UP_ULL((u64)parent_rate, i);
                         ^
   include/linux/math.h:42:2: note: expanded from macro 'DIV_ROUND_UP_ULL'
           DIV_ROUND_DOWN_ULL((unsigned long long)(ll) + (d) - 1, (d))
           ^
   include/linux/math.h:39:37: note: expanded from macro 'DIV_ROUND_DOWN_ULL'
           ({ unsigned long long _tmp = (ll); do_div(_tmp, d); _tmp; })
                                              ^
   arch/x86/include/asm/div64.h:33:21: note: expanded from macro 'do_div'
                           __upper = __high % (__base);            \
                                            ^
   drivers/clk/clk-divider.c:455:6: note: Assuming the condition is false
           if (divider->flags & CLK_DIVIDER_READ_ONLY) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/clk/clk-divider.c:455:2: note: Taking false branch
           if (divider->flags & CLK_DIVIDER_READ_ONLY) {
           ^
   drivers/clk/clk-divider.c:466:9: note: Calling 'divider_determine_rate'
           return divider_determine_rate(hw, req, divider->table, 
divider->width,
                  
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/clk/clk-divider.c:352:8: note: Calling 'clk_divider_bestdiv'
           div = clk_divider_bestdiv(hw, req->best_parent_hw, req->rate,
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/clk/clk-divider.c:299:6: note: Assuming 'rate' is 0
           if (!rate)
               ^~~~~
   drivers/clk/clk-divider.c:299:2: note: Taking true branch
           if (!rate)
           ^
   drivers/clk/clk-divider.c:302:11: note: Calling '_get_maxdiv'
           maxdiv = _get_maxdiv(table, width, flags);
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/clk/clk-divider.c:71:6: note: Assuming the condition is false
           if (flags & CLK_DIVIDER_ONE_BASED)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/clk/clk-divider.c:71:2: note: Taking false branch
           if (flags & CLK_DIVIDER_ONE_BASED)
           ^
   drivers/clk/clk-divider.c:73:6: note: Assuming the condition is false
           if (flags & CLK_DIVIDER_POWER_OF_TWO)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/clk/clk-divider.c:73:2: note: Taking false branch
           if (flags & CLK_DIVIDER_POWER_OF_TWO)
           ^
   drivers/clk/clk-divider.c:75:6: note: Assuming 'table' is non-null, which 
participates in a condition later
           if (table)
               ^~~~~
   drivers/clk/clk-divider.c:75:2: note: Taking true branch
           if (table)
           ^
   drivers/clk/clk-divider.c:302:11: note: Returning from '_get_maxdiv'
           maxdiv = _get_maxdiv(table, width, flags);
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/clk/clk-divider.c:304:6: note: Assuming the condition is false
           if (!(clk_hw_get_flags(hw) & CLK_SET_RATE_PARENT)) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/clk/clk-divider.c:304:2: note: Taking false branch
           if (!(clk_hw_get_flags(hw) & CLK_SET_RATE_PARENT)) {
           ^
   drivers/clk/clk-divider.c:316:11: note: '__UNIQUE_ID___x162' is >= 
'__UNIQUE_ID___y163'
           maxdiv = min(ULONG_MAX / rate, maxdiv);
                    ^
   include/linux/minmax.h:45:19: note: expanded from macro 'min'
   #define min(x, y)       __careful_cmp(x, y, <)
                           ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
                   __cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
                   __cmp(unique_x, unique_y, op); })
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
   #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
                            ^~~
   drivers/clk/clk-divider.c:316:11: note: '?' condition is false
           maxdiv = min(ULONG_MAX / rate, maxdiv);
                    ^
   include/linux/minmax.h:45:19: note: expanded from macro 'min'
   #define min(x, y)       __careful_cmp(x, y, <)
                           ^
   include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
                   __cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
                   ^
   include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
                   __cmp(unique_x, unique_y, op); })
                   ^
   include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
   #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
                            ^
   drivers/clk/clk-divider.c:318:11: note: Calling '_next_div'
           for (i = _next_div(table, 0, flags); i <= maxdiv;

vim +/ret +3905 drivers/clk/clk.c

fc0c209c147f35 Stephen Boyd 2019-04-12  3874  
aded04bc3dec13 Marek Vasut  2022-02-15  3875  static void
aded04bc3dec13 Marek Vasut  2022-02-15  3876  
__clk_register_critical_clock(struct device_node *np, struct clk_core *core,
aded04bc3dec13 Marek Vasut  2022-02-15  3877                          struct 
clk_hw *hw)
aded04bc3dec13 Marek Vasut  2022-02-15  3878  {
aded04bc3dec13 Marek Vasut  2022-02-15  3879    struct of_phandle_args clkspec;
aded04bc3dec13 Marek Vasut  2022-02-15  3880    u32 clksize, clktotal;
aded04bc3dec13 Marek Vasut  2022-02-15  3881    int ret, i, index;
aded04bc3dec13 Marek Vasut  2022-02-15  3882  
aded04bc3dec13 Marek Vasut  2022-02-15  3883    if (!np)
aded04bc3dec13 Marek Vasut  2022-02-15  3884            return;
aded04bc3dec13 Marek Vasut  2022-02-15  3885  
aded04bc3dec13 Marek Vasut  2022-02-15  3886    if (!core->ops->match_clkspec)
aded04bc3dec13 Marek Vasut  2022-02-15  3887            return;
aded04bc3dec13 Marek Vasut  2022-02-15  3888  
aded04bc3dec13 Marek Vasut  2022-02-15  3889    if (of_property_read_u32(np, 
"#clock-cells", &clksize))
aded04bc3dec13 Marek Vasut  2022-02-15  3890            return;
aded04bc3dec13 Marek Vasut  2022-02-15  3891  
aded04bc3dec13 Marek Vasut  2022-02-15  3892    /* Clock node with #clock-cells 
= <0> uses critical-clocks; */
aded04bc3dec13 Marek Vasut  2022-02-15  3893    if (clksize == 0) {
aded04bc3dec13 Marek Vasut  2022-02-15  3894            if 
(of_property_read_bool(np, "critical-clocks") &&
aded04bc3dec13 Marek Vasut  2022-02-15  3895                
!core->ops->match_clkspec(hw, &clkspec))
aded04bc3dec13 Marek Vasut  2022-02-15  3896                    core->flags |= 
CLK_IS_CRITICAL;
aded04bc3dec13 Marek Vasut  2022-02-15  3897            return;
aded04bc3dec13 Marek Vasut  2022-02-15  3898    }
aded04bc3dec13 Marek Vasut  2022-02-15  3899  
aded04bc3dec13 Marek Vasut  2022-02-15  3900    clkspec.np = np;
aded04bc3dec13 Marek Vasut  2022-02-15  3901    clktotal = 
of_property_count_u32_elems(np, "critical-clocks");
aded04bc3dec13 Marek Vasut  2022-02-15  3902    clktotal /= clksize;
aded04bc3dec13 Marek Vasut  2022-02-15  3903    for (index = 0; index < 
clktotal; index++) {
aded04bc3dec13 Marek Vasut  2022-02-15  3904            for (i = 0; i < 
clksize; i++) {
aded04bc3dec13 Marek Vasut  2022-02-15 @3905                    ret = 
of_property_read_u32_index(np, "critical-clocks",
aded04bc3dec13 Marek Vasut  2022-02-15  3906                                    
                 (index * clksize) + i,
aded04bc3dec13 Marek Vasut  2022-02-15  3907                                    
                 &(clkspec.args[i]));
aded04bc3dec13 Marek Vasut  2022-02-15  3908            }
aded04bc3dec13 Marek Vasut  2022-02-15  3909            if 
(!core->ops->match_clkspec(hw, &clkspec))
aded04bc3dec13 Marek Vasut  2022-02-15  3910                    core->flags |= 
CLK_IS_CRITICAL;
aded04bc3dec13 Marek Vasut  2022-02-15  3911    }
aded04bc3dec13 Marek Vasut  2022-02-15  3912  }
aded04bc3dec13 Marek Vasut  2022-02-15  3913  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to