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]
