From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: drivers/regulator/ti-abb-regulator.c:485:15: warning: Division by zero [clang-analyzer-core.DivideZero]
Date: Sun, 13 Mar 2022 17:48:35 +0800 [thread overview]
Message-ID: <202203131744.ts0cBsdO-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 21623 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Cai Huoqing <caihuoqing@baidu.com>
CC: Mark Brown <broonie@kernel.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: aad611a868d16cdc16a7d4a764cef955293e47e3
commit: b36061c2ea5bdacf51305f8bc79f29595b343eb6 regulator: ti-abb: Kconfig: Add helper dependency on COMPILE_TEST
date: 6 months ago
:::::: branch date: 15 hours ago
:::::: commit date: 6 months ago
config: arm-randconfig-c002-20220312 (https://download.01.org/0day-ci/archive/20220313/202203131744.ts0cBsdO-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 276ca87382b8f16a65bddac700202924228982f6)
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://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b36061c2ea5bdacf51305f8bc79f29595b343eb6
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout b36061c2ea5bdacf51305f8bc79f29595b343eb6
# save the config file 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 <lkp@intel.com>
clang-analyzer warnings: (new ones prefixed by >>)
^
net/sched/sch_qfq.c:1116:14: note: Assuming field 'qlen' is not equal to 0
} else if (sch->q.qlen == 0) { /* no aggregate to serve */
^~~~~~~~~~~~~~~~
net/sched/sch_qfq.c:1116:10: note: Taking false branch
} else if (sch->q.qlen == 0) { /* no aggregate to serve */
^
net/sched/sch_qfq.c:1125:3: note: Null pointer value stored to 'in_serv_agg'
in_serv_agg = q->in_serv_agg = qfq_choose_next_agg(q);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/sched/sch_qfq.c:1126:22: note: Passing null pointer value via 1st parameter 'agg'
skb = qfq_peek_skb(in_serv_agg, &cl, &len);
^~~~~~~~~~~
net/sched/sch_qfq.c:1126:9: note: Calling 'qfq_peek_skb'
skb = qfq_peek_skb(in_serv_agg, &cl, &len);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/sched/sch_qfq.c:994:8: note: Access to field 'next' results in a dereference of a null pointer
*cl = list_first_entry(&agg->active, struct qfq_class, alist);
^
include/linux/list.h:522:2: note: expanded from macro 'list_first_entry'
list_entry((ptr)->next, type, member)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/list.h:511:2: note: expanded from macro 'list_entry'
container_of(ptr, type, member)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kernel.h:494:25: note: expanded from macro 'container_of'
void *__mptr = (void *)(ptr); \
^~~~~
net/sched/sch_qfq.c:1140:15: warning: Access to field 'budget' results in a dereference of a null pointer (loaded from variable 'in_serv_agg') [clang-analyzer-core.NullDereference]
if (unlikely(in_serv_agg->budget < len))
^
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
net/sched/sch_qfq.c:1085:6: note: Assuming 'in_serv_agg' is not equal to NULL
if (in_serv_agg == NULL)
^~~~~~~~~~~~~~~~~~~
net/sched/sch_qfq.c:1085:2: note: Taking false branch
if (in_serv_agg == NULL)
^
net/sched/sch_qfq.c:1088:6: note: Assuming the condition is false
if (!list_empty(&in_serv_agg->active))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/sched/sch_qfq.c:1088:2: note: Taking false branch
if (!list_empty(&in_serv_agg->active))
^
net/sched/sch_qfq.c:1096:6: note: 'len' is equal to 0
if (len == 0 || in_serv_agg->budget < len) {
^~~
net/sched/sch_qfq.c:1096:15: note: Left side of '||' is true
if (len == 0 || in_serv_agg->budget < len) {
^
net/sched/sch_qfq.c:1103:7: note: Assuming the condition is true
if (!list_empty(&in_serv_agg->active)) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/sched/sch_qfq.c:1103:3: note: Taking true branch
if (!list_empty(&in_serv_agg->active)) {
^
net/sched/sch_qfq.c:1125:3: note: Null pointer value stored to 'in_serv_agg'
in_serv_agg = q->in_serv_agg = qfq_choose_next_agg(q);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/sched/sch_qfq.c:1128:6: note: Assuming 'skb' is non-null
if (!skb)
^~~~
net/sched/sch_qfq.c:1128:2: note: Taking false branch
if (!skb)
^
net/sched/sch_qfq.c:1140:15: note: Access to field 'budget' results in a dereference of a null pointer (loaded from variable 'in_serv_agg')
if (unlikely(in_serv_agg->budget < len))
^
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
Suppressed 7 warnings (7 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.
7 warnings generated.
Suppressed 7 warnings (7 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.
7 warnings generated.
Suppressed 7 warnings (7 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.
7 warnings generated.
Suppressed 7 warnings (7 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.
7 warnings generated.
Suppressed 7 warnings (7 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.
7 warnings generated.
Suppressed 7 warnings (7 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.
7 warnings generated.
Suppressed 7 warnings (7 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.
7 warnings generated.
Suppressed 7 warnings (7 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.
7 warnings generated.
Suppressed 7 warnings (7 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.
10 warnings generated.
>> drivers/regulator/ti-abb-regulator.c:485:15: warning: Division by zero [clang-analyzer-core.DivideZero]
cycle_rate = DIV_ROUND_CLOSEST(clock_cycles * 10, clk_rate);
^
include/linux/math.h:92:26: note: expanded from macro 'DIV_ROUND_CLOSEST'
(((__x) + ((__d) / 2)) / (__d)) : \
~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
drivers/regulator/ti-abb-regulator.c:427:8: note: Calling 'of_property_read_u32'
ret = of_property_read_u32(dev->of_node, pname, &abb->settling_time);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/of.h:1256:9: note: Calling 'of_property_read_u32_array'
return of_property_read_u32_array(np, propname, out_value, 1);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/of.h:504:12: note: Value assigned to field 'settling_time', which participates in a condition later
int ret = of_property_read_variable_u32_array(np, propname, out_values,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/of.h:506:6: note: Assuming 'ret' is >= 0
if (ret >= 0)
^~~~~~~~
include/linux/of.h:506:2: note: Taking true branch
if (ret >= 0)
^
include/linux/of.h:507:3: note: Returning zero, which participates in a condition later
return 0;
^~~~~~~~
include/linux/of.h:1256:9: note: Returning from 'of_property_read_u32_array'
return of_property_read_u32_array(np, propname, out_value, 1);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/of.h:1256:2: note: Returning zero, which participates in a condition later
return of_property_read_u32_array(np, propname, out_value, 1);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/regulator/ti-abb-regulator.c:427:8: note: Returning from 'of_property_read_u32'
ret = of_property_read_u32(dev->of_node, pname, &abb->settling_time);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/regulator/ti-abb-regulator.c:428:6: note: 'ret' is 0
if (ret) {
^~~
drivers/regulator/ti-abb-regulator.c:428:2: note: Taking false branch
if (ret) {
^
drivers/regulator/ti-abb-regulator.c:434:6: note: Assuming field 'settling_time' is not equal to 0
if (!abb->settling_time) {
^~~~~~~~~~~~~~~~~~~
drivers/regulator/ti-abb-regulator.c:434:2: note: Taking false branch
if (!abb->settling_time) {
^
drivers/regulator/ti-abb-regulator.c:440:8: note: Calling 'of_property_read_u32'
ret = of_property_read_u32(dev->of_node, pname, &clock_cycles);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/of.h:1256:9: note: Calling 'of_property_read_u32_array'
return of_property_read_u32_array(np, propname, out_value, 1);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/of.h:504:12: note: Value assigned to 'clock_cycles', which participates in a condition later
int ret = of_property_read_variable_u32_array(np, propname, out_values,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/of.h:506:6: note: Assuming 'ret' is >= 0
if (ret >= 0)
^~~~~~~~
include/linux/of.h:506:2: note: Taking true branch
if (ret >= 0)
^
include/linux/of.h:507:3: note: Returning zero, which participates in a condition later
return 0;
^~~~~~~~
include/linux/of.h:1256:9: note: Returning from 'of_property_read_u32_array'
return of_property_read_u32_array(np, propname, out_value, 1);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/of.h:1256:2: note: Returning zero, which participates in a condition later
return of_property_read_u32_array(np, propname, out_value, 1);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/regulator/ti-abb-regulator.c:440:8: note: Returning from 'of_property_read_u32'
ret = of_property_read_u32(dev->of_node, pname, &clock_cycles);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/regulator/ti-abb-regulator.c:441:6: note: 'ret' is 0
if (ret) {
^~~
drivers/regulator/ti-abb-regulator.c:441:2: note: Taking false branch
if (ret) {
^
drivers/regulator/ti-abb-regulator.c:446:6: note: Assuming 'clock_cycles' is not equal to 0
if (!clock_cycles) {
^~~~~~~~~~~~~
drivers/regulator/ti-abb-regulator.c:446:2: note: Taking false branch
if (!clock_cycles) {
^
drivers/regulator/ti-abb-regulator.c:452:6: note: Calling 'IS_ERR'
if (IS_ERR(abb->clk)) {
^~~~~~~~~~~~~~~~
include/linux/err.h:36:2: note: Returning zero, which participates in a condition later
return IS_ERR_VALUE((unsigned long)ptr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/regulator/ti-abb-regulator.c:452:6: note: Returning from 'IS_ERR'
if (IS_ERR(abb->clk)) {
^~~~~~~~~~~~~~~~
drivers/regulator/ti-abb-regulator.c:452:2: note: Taking false branch
if (IS_ERR(abb->clk)) {
^
drivers/regulator/ti-abb-regulator.c:482:13: note: Left side of '||' is true
clk_rate = DIV_ROUND_CLOSEST(clk_get_rate(abb->clk), 1000000);
^
include/linux/math.h:89:23: note: expanded from macro 'DIV_ROUND_CLOSEST'
(((typeof(x))-1) > 0 || \
vim +485 drivers/regulator/ti-abb-regulator.c
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 410
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 411 /**
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 412 * ti_abb_init_timings() - setup ABB clock timing for the current platform
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 413 * @dev: device
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 414 * @abb: pointer to the abb instance
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 415 *
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 416 * Return: 0 if timing is updated, else returns error result.
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 417 */
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 418 static int ti_abb_init_timings(struct device *dev, struct ti_abb *abb)
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 419 {
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 420 u32 clock_cycles;
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 421 u32 clk_rate, sr2_wt_cnt_val, cycle_rate;
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 422 const struct ti_abb_reg *regs = abb->regs;
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 423 int ret;
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 424 char *pname = "ti,settling-time";
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 425
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 426 /* read device tree properties */
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 427 ret = of_property_read_u32(dev->of_node, pname, &abb->settling_time);
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 428 if (ret) {
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 429 dev_err(dev, "Unable to get property '%s'(%d)\n", pname, ret);
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 430 return ret;
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 431 }
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 432
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 433 /* ABB LDO cannot be settle in 0 time */
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 434 if (!abb->settling_time) {
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 435 dev_err(dev, "Invalid property:'%s' set as 0!\n", pname);
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 436 return -EINVAL;
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 437 }
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 438
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 439 pname = "ti,clock-cycles";
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 440 ret = of_property_read_u32(dev->of_node, pname, &clock_cycles);
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 441 if (ret) {
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 442 dev_err(dev, "Unable to get property '%s'(%d)\n", pname, ret);
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 443 return ret;
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 444 }
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 445 /* ABB LDO cannot be settle in 0 clock cycles */
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 446 if (!clock_cycles) {
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 447 dev_err(dev, "Invalid property:'%s' set as 0!\n", pname);
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 448 return -EINVAL;
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 449 }
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 450
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 451 abb->clk = devm_clk_get(dev, NULL);
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 452 if (IS_ERR(abb->clk)) {
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 453 ret = PTR_ERR(abb->clk);
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 454 dev_err(dev, "%s: Unable to get clk(%d)\n", __func__, ret);
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 455 return ret;
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 456 }
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 457
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 458 /*
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 459 * SR2_WTCNT_VALUE is the settling time for the ABB ldo after a
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 460 * transition and must be programmed with the correct time at boot.
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 461 * The value programmed into the register is the number of SYS_CLK
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 462 * clock cycles that match a given wall time profiled for the ldo.
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 463 * This value depends on:
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 464 * settling time of ldo in micro-seconds (varies per OMAP family)
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 465 * # of clock cycles per SYS_CLK period (varies per OMAP family)
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 466 * the SYS_CLK frequency in MHz (varies per board)
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 467 * The formula is:
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 468 *
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 469 * ldo settling time (in micro-seconds)
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 470 * SR2_WTCNT_VALUE = ------------------------------------------
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 471 * (# system clock cycles) * (sys_clk period)
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 472 *
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 473 * Put another way:
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 474 *
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 475 * SR2_WTCNT_VALUE = settling time / (# SYS_CLK cycles / SYS_CLK rate))
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 476 *
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 477 * To avoid dividing by zero multiply both "# clock cycles" and
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 478 * "settling time" by 10 such that the final result is the one we want.
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 479 */
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 480
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 481 /* Convert SYS_CLK rate to MHz & prevent divide by zero */
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 482 clk_rate = DIV_ROUND_CLOSEST(clk_get_rate(abb->clk), 1000000);
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 483
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 484 /* Calculate cycle rate */
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 @485 cycle_rate = DIV_ROUND_CLOSEST(clock_cycles * 10, clk_rate);
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 486
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 487 /* Calulate SR2_WTCNT_VALUE */
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 488 sr2_wt_cnt_val = DIV_ROUND_CLOSEST(abb->settling_time * 10, cycle_rate);
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 489
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 490 dev_dbg(dev, "%s: Clk_rate=%ld, sr2_cnt=0x%08x\n", __func__,
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 491 clk_get_rate(abb->clk), sr2_wt_cnt_val);
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 492
6127daa85094e2 Nishanth Menon 2014-01-23 493 ti_abb_rmw(regs->sr2_wtcnt_value_mask, sr2_wt_cnt_val, abb->setup_reg);
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 494
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 495 return 0;
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 496 }
40b1936efebdb9 Andrii.Tseglytskyi 2013-05-02 497
:::::: The code at line 485 was first introduced by commit
:::::: 40b1936efebdb9c31d9ed6fe59055f71ea366509 regulator: Introduce TI Adaptive Body Bias(ABB) on-chip LDO driver
:::::: TO: Andrii.Tseglytskyi <andrii.tseglytskyi@ti.com>
:::::: CC: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
0-DAY CI Kernel Test Service
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
next reply other threads:[~2022-03-13 9:48 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-13 9:48 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2022-03-14 4:12 drivers/regulator/ti-abb-regulator.c:485:15: warning: Division by zero [clang-analyzer-core.DivideZero] kernel test robot
2022-03-22 20:20 kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202203131744.ts0cBsdO-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.