CC: [email protected]
CC: [email protected]
CC: [email protected]
TO: Eugen Hristev <[email protected]>
CC: Mauro Carvalho Chehab <[email protected]>
CC: [email protected]
CC: Jacopo Mondi <[email protected]>
CC: Hans Verkuil <[email protected]>

tree:   git://linuxtv.org/mchehab/media-next.git master
head:   68a99f6a0ebfe9101ea79ba5af1c407a5ad4f629
commit: 118bf76a35bc2ed061cd1454fe5e57d1c7bcd8d0 [63/171] media: atmel: 
atmel-isc: split the clock code into separate source file
:::::: branch date: 10 hours ago
:::::: commit date: 5 days ago
config: riscv-randconfig-c006-20220125 
(https://download.01.org/0day-ci/archive/20220129/[email protected]/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
33b45ee44b1f32ffdbc995e6fec806271b4b3ba4)
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 mchehab-media-next 
git://linuxtv.org/mchehab/media-next.git
        git fetch --no-tags mchehab-media-next master
        git checkout 118bf76a35bc2ed061cd1454fe5e57d1c7bcd8d0
        # save the config file to linux build tree
        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 >>)
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/drm_syncobj.c:564:6: note: 'ret' is 0
           if (ret)
               ^~~
   drivers/gpu/drm/drm_syncobj.c:564:2: note: Taking false branch
           if (ret)
           ^
   drivers/gpu/drm/drm_syncobj.c:567:8: note: Calling 'drm_syncobj_get_handle'
           ret = drm_syncobj_get_handle(file_private, syncobj, handle);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/drm_syncobj.c:547:6: note: Assuming 'ret' is < 0
           if (ret < 0) {
               ^~~~~~~
   drivers/gpu/drm/drm_syncobj.c:547:2: note: Taking true branch
           if (ret < 0) {
           ^
   drivers/gpu/drm/drm_syncobj.c:548:3: note: Calling 'drm_syncobj_put'
                   drm_syncobj_put(syncobj);
                   ^~~~~~~~~~~~~~~~~~~~~~~~
   include/drm/drm_syncobj.h:88:2: note: Calling 'kref_put'
           kref_put(&obj->refcount, drm_syncobj_free);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/kref.h:64:2: note: Taking true branch
           if (refcount_dec_and_test(&kref->refcount)) {
           ^
   include/linux/kref.h:65:3: note: Calling 'drm_syncobj_free'
                   release(kref);
                   ^~~~~~~~~~~~~
   drivers/gpu/drm/drm_syncobj.c:475:2: note: Memory is released
           kfree(syncobj);
           ^~~~~~~~~~~~~~
   include/linux/kref.h:65:3: note: Returning; memory was released
                   release(kref);
                   ^~~~~~~~~~~~~
   include/drm/drm_syncobj.h:88:2: note: Returning; memory was released
           kref_put(&obj->refcount, drm_syncobj_free);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/drm_syncobj.c:548:3: note: Returning; memory was released 
via 1st parameter
                   drm_syncobj_put(syncobj);
                   ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/drm_syncobj.c:567:8: note: Returning; memory was released 
via 2nd parameter
           ret = drm_syncobj_get_handle(file_private, syncobj, handle);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/drm_syncobj.c:568:2: note: Use of memory after it is freed
           drm_syncobj_put(syncobj);
           ^               ~~~~~~~
   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.
   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.
   3 warnings generated.
   drivers/gpu/drm/tiny/cirrus.c:564:2: warning: Value stored to 'ret' is never 
read [clang-analyzer-deadcode.DeadStores]
           ret = -ENOMEM;
           ^     ~~~~~~~
   drivers/gpu/drm/tiny/cirrus.c:564:2: note: Value stored to 'ret' is never 
read
           ret = -ENOMEM;
           ^     ~~~~~~~
   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.
   3 warnings generated.
>> drivers/media/platform/atmel/atmel-isc-clk.c:125:18: warning: Value stored 
>> to 'isc_clk' during its initialization is never read 
>> [clang-analyzer-deadcode.DeadStores]
           struct isc_clk *isc_clk = to_isc_clk(hw);
                           ^~~~~~~
   drivers/media/platform/atmel/atmel-isc-clk.c:125:18: note: Value stored to 
'isc_clk' during its initialization is never read
           struct isc_clk *isc_clk = to_isc_clk(hw);
                           ^~~~~~~
   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.
   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/watchdog/mlx_wdt.c:124:14: warning: The result of the left shift is 
undefined due to shifting by '32', which is greater or equal to the width of 
type 'unsigned long' [clang-analyzer-core.UndefinedBinaryOperatorResult]
                   set_time = BIT(hw_timeout) / MLXREG_WDT_CLOCK_SCALE;
                              ^
   include/vdso/bits.h:7:26: note: expanded from macro 'BIT'
   #define BIT(nr)                 (UL(1) << (nr))
                                          ^
   drivers/watchdog/mlx_wdt.c:287:6: note: Assuming 'pdata' is non-null
           if (!pdata) {
               ^~~~~~
   drivers/watchdog/mlx_wdt.c:287:2: note: Taking false branch
           if (!pdata) {
           ^
   drivers/watchdog/mlx_wdt.c:292:6: note: Assuming 'wdt' is non-null
           if (!wdt)
               ^~~~
   drivers/watchdog/mlx_wdt.c:292:2: note: Taking false branch
           if (!wdt)
           ^
   drivers/watchdog/mlx_wdt.c:298:6: note: Assuming 'rc' is >= 0
           if (rc < 0)
               ^~~~~~
   drivers/watchdog/mlx_wdt.c:298:2: note: Taking false branch
           if (rc < 0)
           ^
   drivers/watchdog/mlx_wdt.c:304:7: note: Assuming the condition is false
           if ((pdata->features & MLXREG_CORE_WD_FEATURE_NOWAYOUT))
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/watchdog/mlx_wdt.c:304:2: note: Taking false branch
           if ((pdata->features & MLXREG_CORE_WD_FEATURE_NOWAYOUT))
           ^
   drivers/watchdog/mlx_wdt.c:308:2: note: Calling 'watchdog_set_drvdata'
           watchdog_set_drvdata(&wdt->wdd, wdt);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/watchdog.h:197:1: note: Returning without writing to 
'data->wdt_type', which participates in a condition later
   }
   ^
   drivers/watchdog/mlx_wdt.c:308:2: note: Returning from 'watchdog_set_drvdata'
           watchdog_set_drvdata(&wdt->wdd, wdt);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/watchdog/mlx_wdt.c:309:7: note: Calling 'mlxreg_wdt_init_timeout'
           rc = mlxreg_wdt_init_timeout(wdt, pdata);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/watchdog/mlx_wdt.c:276:9: note: Calling 'mlxreg_wdt_set_timeout'
           return mlxreg_wdt_set_timeout(&wdt->wdd, timeout);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/watchdog/mlx_wdt.c:115:2: note: Control jumps to 'case 
MLX_WDT_TYPE1:'  at line 116
           switch (wdt->wdt_type) {
           ^
   drivers/watchdog/mlx_wdt.c:118:7: note: Assuming 'rc' is 0
                   if (rc)
                       ^~
   drivers/watchdog/mlx_wdt.c:118:3: note: Taking false branch
                   if (rc)
                   ^
   drivers/watchdog/mlx_wdt.c:121:16: note: '?' condition is false
                   hw_timeout = order_base_2(timeout * MLXREG_WDT_CLOCK_SCALE);
                                ^
   include/linux/log2.h:219:2: note: expanded from macro 'order_base_2'
           __builtin_constant_p(n) ? (             \
           ^
   drivers/watchdog/mlx_wdt.c:121:16: note: Calling '__order_base_2'
                   hw_timeout = order_base_2(timeout * MLXREG_WDT_CLOCK_SCALE);
                                ^
   include/linux/log2.h:222:2: note: expanded from macro 'order_base_2'
           __order_base_2(n)                       \
           ^~~~~~~~~~~~~~~~~
   include/linux/log2.h:201:9: note: Assuming 'n' is > 1
           return n > 1 ? ilog2(n - 1) + 1 : 0;
                  ^~~~~
   include/linux/log2.h:201:9: note: '?' condition is true
   include/linux/log2.h:201:17: note: '?' condition is false

vim +/isc_clk +125 drivers/media/platform/atmel/atmel-isc-clk.c

118bf76a35bc2e Eugen Hristev 2021-12-13  121  
118bf76a35bc2e Eugen Hristev 2021-12-13  122  static int 
isc_clk_determine_rate(struct clk_hw *hw,
118bf76a35bc2e Eugen Hristev 2021-12-13  123                              
struct clk_rate_request *req)
118bf76a35bc2e Eugen Hristev 2021-12-13  124  {
118bf76a35bc2e Eugen Hristev 2021-12-13 @125    struct isc_clk *isc_clk = 
to_isc_clk(hw);
118bf76a35bc2e Eugen Hristev 2021-12-13  126    long best_rate = -EINVAL;
118bf76a35bc2e Eugen Hristev 2021-12-13  127    int best_diff = -1;
118bf76a35bc2e Eugen Hristev 2021-12-13  128    unsigned int i, div;
118bf76a35bc2e Eugen Hristev 2021-12-13  129  
118bf76a35bc2e Eugen Hristev 2021-12-13  130    for (i = 0; i < 
clk_hw_get_num_parents(hw); i++) {
118bf76a35bc2e Eugen Hristev 2021-12-13  131            struct clk_hw *parent;
118bf76a35bc2e Eugen Hristev 2021-12-13  132            unsigned long 
parent_rate;
118bf76a35bc2e Eugen Hristev 2021-12-13  133  
118bf76a35bc2e Eugen Hristev 2021-12-13  134            parent = 
clk_hw_get_parent_by_index(hw, i);
118bf76a35bc2e Eugen Hristev 2021-12-13  135            if (!parent)
118bf76a35bc2e Eugen Hristev 2021-12-13  136                    continue;
118bf76a35bc2e Eugen Hristev 2021-12-13  137  
118bf76a35bc2e Eugen Hristev 2021-12-13  138            parent_rate = 
clk_hw_get_rate(parent);
118bf76a35bc2e Eugen Hristev 2021-12-13  139            if (!parent_rate)
118bf76a35bc2e Eugen Hristev 2021-12-13  140                    continue;
118bf76a35bc2e Eugen Hristev 2021-12-13  141  
118bf76a35bc2e Eugen Hristev 2021-12-13  142            for (div = 1; div < 
ISC_CLK_MAX_DIV + 2; div++) {
118bf76a35bc2e Eugen Hristev 2021-12-13  143                    unsigned long 
rate;
118bf76a35bc2e Eugen Hristev 2021-12-13  144                    int diff;
118bf76a35bc2e Eugen Hristev 2021-12-13  145  
118bf76a35bc2e Eugen Hristev 2021-12-13  146                    rate = 
DIV_ROUND_CLOSEST(parent_rate, div);
118bf76a35bc2e Eugen Hristev 2021-12-13  147                    diff = 
abs(req->rate - rate);
118bf76a35bc2e Eugen Hristev 2021-12-13  148  
118bf76a35bc2e Eugen Hristev 2021-12-13  149                    if (best_diff < 
0 || best_diff > diff) {
118bf76a35bc2e Eugen Hristev 2021-12-13  150                            
best_rate = rate;
118bf76a35bc2e Eugen Hristev 2021-12-13  151                            
best_diff = diff;
118bf76a35bc2e Eugen Hristev 2021-12-13  152                            
req->best_parent_rate = parent_rate;
118bf76a35bc2e Eugen Hristev 2021-12-13  153                            
req->best_parent_hw = parent;
118bf76a35bc2e Eugen Hristev 2021-12-13  154                    }
118bf76a35bc2e Eugen Hristev 2021-12-13  155  
118bf76a35bc2e Eugen Hristev 2021-12-13  156                    if (!best_diff 
|| rate < req->rate)
118bf76a35bc2e Eugen Hristev 2021-12-13  157                            break;
118bf76a35bc2e Eugen Hristev 2021-12-13  158            }
118bf76a35bc2e Eugen Hristev 2021-12-13  159  
118bf76a35bc2e Eugen Hristev 2021-12-13  160            if (!best_diff)
118bf76a35bc2e Eugen Hristev 2021-12-13  161                    break;
118bf76a35bc2e Eugen Hristev 2021-12-13  162    }
118bf76a35bc2e Eugen Hristev 2021-12-13  163  
118bf76a35bc2e Eugen Hristev 2021-12-13  164    dev_dbg(isc_clk->dev,
118bf76a35bc2e Eugen Hristev 2021-12-13  165            "ISC CLK: %s, best_rate 
= %ld, parent clk: %s @ %ld\n",
118bf76a35bc2e Eugen Hristev 2021-12-13  166            __func__, best_rate,
118bf76a35bc2e Eugen Hristev 2021-12-13  167            
__clk_get_name((req->best_parent_hw)->clk),
118bf76a35bc2e Eugen Hristev 2021-12-13  168            req->best_parent_rate);
118bf76a35bc2e Eugen Hristev 2021-12-13  169  
118bf76a35bc2e Eugen Hristev 2021-12-13  170    if (best_rate < 0)
118bf76a35bc2e Eugen Hristev 2021-12-13  171            return best_rate;
118bf76a35bc2e Eugen Hristev 2021-12-13  172  
118bf76a35bc2e Eugen Hristev 2021-12-13  173    req->rate = best_rate;
118bf76a35bc2e Eugen Hristev 2021-12-13  174  
118bf76a35bc2e Eugen Hristev 2021-12-13  175    return 0;
118bf76a35bc2e Eugen Hristev 2021-12-13  176  }
118bf76a35bc2e Eugen Hristev 2021-12-13  177  

---
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