* [mchehab-media-next:master 63/171] 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]
@ 2022-01-29 4:12 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-01-29 4:12 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 17662 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Eugen Hristev <eugen.hristev@microchip.com>
CC: Mauro Carvalho Chehab <mchehab@kernel.org>
CC: linux-media(a)vger.kernel.org
CC: Jacopo Mondi <jacopo+renesas@jmondi.org>
CC: Hans Verkuil <hverkuil@xs4all.nl>
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/202201291253.In8GLX03-lkp(a)intel.com/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 <lkp@intel.com>
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/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-01-29 4:12 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-01-29 4:12 [mchehab-media-next:master 63/171] 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] kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.