CC: [email protected] CC: [email protected] In-Reply-To: <[email protected]> References: <[email protected]> TO: Michael Tretter <[email protected]> TO: [email protected] TO: [email protected] TO: Marek Vasut <[email protected]> CC: Rob Herring <[email protected]> CC: Mauro Carvalho Chehab <[email protected]> CC: Sakari Ailus <[email protected]> CC: [email protected] CC: Ian Arkver <[email protected]> CC: [email protected] CC: Michael Tretter <[email protected]>
Hi Michael, I love your patch! Perhaps something to improve: [auto build test WARNING on media-tree/master] [also build test WARNING on robh/for-next linus/master v5.16-rc3 next-20211201] [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/Michael-Tretter/media-i2c-isl7998x-Add-driver-for-Intersil-ISL7998x/20211129-204304 base: git://linuxtv.org/media_tree.git master :::::: branch date: 2 days ago :::::: commit date: 2 days ago config: i386-randconfig-c001-20211130 (https://download.01.org/0day-ci/archive/20211202/[email protected]/config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 25eb7fa01d7ebbe67648ea03841cda55b4239ab2) 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/0cd375b25d1d515c40b89e8aaffd0456a19ecffb git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Michael-Tretter/media-i2c-isl7998x-Add-driver-for-Intersil-ISL7998x/20211129-204304 git checkout 0cd375b25d1d515c40b89e8aaffd0456a19ecffb # 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 >>) ^ include/linux/spinlock.h:333:2: note: expanded from macro 'spin_lock_init' __raw_spin_lock_init(spinlock_check(lock), \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/wan/pc300too.c:435:3: note: Loop condition is false. Exiting loop spin_lock_init(&port->lock); ^ include/linux/spinlock.h:329:35: note: expanded from macro 'spin_lock_init' # define spin_lock_init(lock) \ ^ drivers/net/wan/pc300too.c:445:7: note: Assuming field 'type' is not equal to PC300_X21 if (card->type == PC300_X21) ^~~~~~~~~~~~~~~~~~~~~~~ drivers/net/wan/pc300too.c:445:3: note: Taking false branch if (card->type == PC300_X21) ^ drivers/net/wan/pc300too.c:450:3: note: Calling 'sca_init_port' sca_init_port(port); ^~~~~~~~~~~~~~~~~~~ drivers/net/wan/hd64572.c:123:16: note: Assuming field 'chan' is 0 u16 dmac_rx = get_dmac_rx(port), dmac_tx = get_dmac_tx(port); ^ drivers/net/wan/hd64572.c:45:28: note: expanded from macro 'get_dmac_rx' #define get_dmac_rx(port) ((port)->chan ? DMAC1RX_OFFSET : DMAC0RX_OFFSET) ^~~~~~~~~~~~ drivers/net/wan/hd64572.c:123:16: note: '?' condition is false u16 dmac_rx = get_dmac_rx(port), dmac_tx = get_dmac_tx(port); ^ drivers/net/wan/hd64572.c:45:28: note: expanded from macro 'get_dmac_rx' #define get_dmac_rx(port) ((port)->chan ? DMAC1RX_OFFSET : DMAC0RX_OFFSET) ^ drivers/net/wan/hd64572.c:123:45: note: Field 'chan' is 0 u16 dmac_rx = get_dmac_rx(port), dmac_tx = get_dmac_tx(port); ^ drivers/net/wan/hd64572.c:46:36: note: expanded from macro 'get_dmac_tx' #define get_dmac_tx(port) ((port)->chan ? DMAC1TX_OFFSET : DMAC0TX_OFFSET) ^ drivers/net/wan/hd64572.c:123:45: note: '?' condition is false u16 dmac_rx = get_dmac_rx(port), dmac_tx = get_dmac_tx(port); ^ drivers/net/wan/hd64572.c:46:28: note: expanded from macro 'get_dmac_tx' #define get_dmac_tx(port) ((port)->chan ? DMAC1TX_OFFSET : DMAC0TX_OFFSET) ^ drivers/net/wan/hd64572.c:130:2: note: Loop condition is true. Entering loop body for (transmit = 0; transmit < 2; transmit++) { ^ drivers/net/wan/hd64572.c:131:15: note: 'transmit' is 0 u16 buffs = transmit ? card->tx_ring_buffers ^~~~~~~~ drivers/net/wan/hd64572.c:131:15: note: '?' condition is false drivers/net/wan/hd64572.c:134:15: note: Assuming 'i' is >= 'buffs' for (i = 0; i < buffs; i++) { ^~~~~~~~~ drivers/net/wan/hd64572.c:134:3: note: Loop condition is false. Execution continues on line 130 for (i = 0; i < buffs; i++) { ^ drivers/net/wan/hd64572.c:130:2: note: Loop condition is true. Entering loop body for (transmit = 0; transmit < 2; transmit++) { ^ drivers/net/wan/hd64572.c:131:15: note: 'transmit' is 1 u16 buffs = transmit ? card->tx_ring_buffers ^~~~~~~~ drivers/net/wan/hd64572.c:131:15: note: '?' condition is true drivers/net/wan/hd64572.c:134:15: note: Assuming 'i' is >= 'buffs' for (i = 0; i < buffs; i++) { ^~~~~~~~~ drivers/net/wan/hd64572.c:134:3: note: Loop condition is false. Execution continues on line 130 for (i = 0; i < buffs; i++) { ^ drivers/net/wan/hd64572.c:130:2: note: Loop condition is false. Execution continues on line 147 for (transmit = 0; transmit < 2; transmit++) { ^ drivers/net/wan/hd64572.c:155:11: note: Calling 'desc_offset' sca_outl(desc_offset(port, 0, 0), dmac_rx + CDAL, card); ^ drivers/net/wan/hd64572.c:53:45: note: expanded from macro 'sca_outl' #define sca_outl(value, reg, card) writel(value, (card)->scabase + (reg)) ^~~~~ drivers/net/wan/hd64572.c:87:9: note: Calling 'desc_abs_number' return desc_abs_number(port, desc, transmit) * sizeof(pkt_desc); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/wan/hd64572.c:77:2: note: 'rx_buffs' initialized to 0 u16 rx_buffs = port->card->rx_ring_buffers; ^~~~~~~~~~~~ drivers/net/wan/hd64572.c:80:11: note: 'transmit' is 0 desc %= (transmit ? tx_buffs : rx_buffs); // called with "X + 1" etc. ^~~~~~~~ drivers/net/wan/hd64572.c:80:11: note: '?' condition is false drivers/net/wan/hd64572.c:80:7: note: Division by zero desc %= (transmit ? tx_buffs : rx_buffs); // called with "X + 1" etc. ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 11 warnings (11 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. 9 warnings generated. >> drivers/media/i2c/isl7998x.c:642:17: warning: Value stored to 'dev' during >> its initialization is never read [clang-analyzer-deadcode.DeadStores] struct device *dev = isl7998x->subdev.dev; ^~~ ~~~~~~~~~~~~~~~~~~~~ drivers/media/i2c/isl7998x.c:642:17: note: Value stored to 'dev' during its initialization is never read struct device *dev = isl7998x->subdev.dev; ^~~ ~~~~~~~~~~~~~~~~~~~~ drivers/media/i2c/isl7998x.c:863:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct device *dev = &client->dev; ^~~ ~~~~~~~~~~~~ drivers/media/i2c/isl7998x.c:863:17: note: Value stored to 'dev' during its initialization is never read struct device *dev = &client->dev; ^~~ ~~~~~~~~~~~~ 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. 6 warnings generated. Suppressed 6 warnings (6 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. 11 warnings generated. drivers/media/i2c/rdacm21.c:373:11: warning: The left operand of '==' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult] if (val == OV10640_ID_HIGH) ^ drivers/media/i2c/rdacm21.c:550:6: note: Assuming 'dev' is non-null if (!dev) ^~~~ drivers/media/i2c/rdacm21.c:550:2: note: Taking false branch if (!dev) ^ drivers/media/i2c/rdacm21.c:557:6: note: 'ret' is >= 0 if (ret < 0) { ^~~ drivers/media/i2c/rdacm21.c:557:2: note: Taking false branch if (ret < 0) { ^ drivers/media/i2c/rdacm21.c:564:2: note: Taking false branch if (IS_ERR(dev->isp)) ^ drivers/media/i2c/rdacm21.c:567:8: note: Calling 'rdacm21_initialize' ret = rdacm21_initialize(dev); ^~~~~~~~~~~~~~~~~~~~~~~ drivers/media/i2c/rdacm21.c:481:6: note: Assuming 'ret' is 0 if (ret) ^~~ drivers/media/i2c/rdacm21.c:481:2: note: Taking false branch if (ret) ^ drivers/media/i2c/rdacm21.c:489:6: note: Assuming 'ret' is 0 if (ret) ^~~ drivers/media/i2c/rdacm21.c:489:2: note: Taking false branch if (ret) ^ drivers/media/i2c/rdacm21.c:493:6: note: Assuming 'ret' is 0 if (ret) ^~~ drivers/media/i2c/rdacm21.c:493:2: note: Taking false branch if (ret) ^ drivers/media/i2c/rdacm21.c:501:6: note: Assuming 'ret' is 0 if (ret) ^~~ drivers/media/i2c/rdacm21.c:501:2: note: Taking false branch if (ret) ^ drivers/media/i2c/rdacm21.c:505:6: note: Assuming 'ret' is 0 if (ret) ^~~ drivers/media/i2c/rdacm21.c:505:2: note: Taking false branch if (ret) ^ drivers/media/i2c/rdacm21.c:510:6: note: Assuming 'ret' is 0 if (ret) ^~~ drivers/media/i2c/rdacm21.c:510:2: note: Taking false branch if (ret) ^ drivers/media/i2c/rdacm21.c:514:6: note: Assuming 'ret' is 0 if (ret) ^~~ drivers/media/i2c/rdacm21.c:514:2: note: Taking false branch if (ret) ^ drivers/media/i2c/rdacm21.c:520:6: note: Assuming 'ret' is 0 if (ret) ^~~ drivers/media/i2c/rdacm21.c:520:2: note: Taking false branch if (ret) ^ drivers/media/i2c/rdacm21.c:526:6: note: Assuming 'ret' is 0 if (ret) ^~~ drivers/media/i2c/rdacm21.c:526:2: note: Taking false branch if (ret) ^ drivers/media/i2c/rdacm21.c:530:8: note: Calling 'ov490_initialize' ret = ov490_initialize(dev); ^~~~~~~~~~~~~~~~~~~~~ drivers/media/i2c/rdacm21.c:399:2: note: Loop condition is true. Entering loop body for (i = 0; i < OV490_PID_TIMEOUT; ++i) { vim +/dev +642 drivers/media/i2c/isl7998x.c 0cd375b25d1d51 Marek Vasut 2021-11-29 629 0cd375b25d1d51 Marek Vasut 2021-11-29 630 static int isl7998x_init(struct isl7998x *isl7998x) 0cd375b25d1d51 Marek Vasut 2021-11-29 631 { 0cd375b25d1d51 Marek Vasut 2021-11-29 632 const unsigned int lanes = isl7998x->nr_mipi_lanes; 0cd375b25d1d51 Marek Vasut 2021-11-29 633 const u32 isl7998x_video_in_chan_map[] = { 0x00, 0x11, 0x02, 0x02 }; 0cd375b25d1d51 Marek Vasut 2021-11-29 634 const struct reg_sequence isl7998x_init_seq_custom[] = { 0cd375b25d1d51 Marek Vasut 2021-11-29 635 { ISL7998x_REG_P0_VIDEO_IN_CHAN_CTL, 0cd375b25d1d51 Marek Vasut 2021-11-29 636 isl7998x_video_in_chan_map[isl7998x->nr_inputs - 1] }, 0cd375b25d1d51 Marek Vasut 2021-11-29 637 { ISL7998x_REG_P0_CLK_CTL_4, 0cd375b25d1d51 Marek Vasut 2021-11-29 638 (lanes == 1) ? 0x40 : 0x41 }, 0cd375b25d1d51 Marek Vasut 2021-11-29 639 { ISL7998x_REG_P5_LI_ENGINE_CTL, 0cd375b25d1d51 Marek Vasut 2021-11-29 640 (lanes == 1) ? 0x01 : 0x02 }, 0cd375b25d1d51 Marek Vasut 2021-11-29 641 }; 0cd375b25d1d51 Marek Vasut 2021-11-29 @642 struct device *dev = isl7998x->subdev.dev; 0cd375b25d1d51 Marek Vasut 2021-11-29 643 struct regmap *regmap = isl7998x->regmap; 0cd375b25d1d51 Marek Vasut 2021-11-29 644 int ret; 0cd375b25d1d51 Marek Vasut 2021-11-29 645 0cd375b25d1d51 Marek Vasut 2021-11-29 646 dev_dbg(dev, "configuring %d lanes for %d inputs (norm 0x%llx)\n", 0cd375b25d1d51 Marek Vasut 2021-11-29 647 isl7998x->nr_mipi_lanes, isl7998x->nr_inputs, 0cd375b25d1d51 Marek Vasut 2021-11-29 648 isl7998x->norm); 0cd375b25d1d51 Marek Vasut 2021-11-29 649 0cd375b25d1d51 Marek Vasut 2021-11-29 650 ret = regmap_register_patch(regmap, isl7998x_init_seq_1, 0cd375b25d1d51 Marek Vasut 2021-11-29 651 ARRAY_SIZE(isl7998x_init_seq_1)); 0cd375b25d1d51 Marek Vasut 2021-11-29 652 if (ret) 0cd375b25d1d51 Marek Vasut 2021-11-29 653 return ret; 0cd375b25d1d51 Marek Vasut 2021-11-29 654 0cd375b25d1d51 Marek Vasut 2021-11-29 655 ret = isl7998x_set_standard(isl7998x, isl7998x->norm); 0cd375b25d1d51 Marek Vasut 2021-11-29 656 if (ret) 0cd375b25d1d51 Marek Vasut 2021-11-29 657 return ret; 0cd375b25d1d51 Marek Vasut 2021-11-29 658 0cd375b25d1d51 Marek Vasut 2021-11-29 659 ret = regmap_register_patch(regmap, isl7998x_init_seq_custom, 0cd375b25d1d51 Marek Vasut 2021-11-29 660 ARRAY_SIZE(isl7998x_init_seq_custom)); 0cd375b25d1d51 Marek Vasut 2021-11-29 661 if (ret) 0cd375b25d1d51 Marek Vasut 2021-11-29 662 return ret; 0cd375b25d1d51 Marek Vasut 2021-11-29 663 0cd375b25d1d51 Marek Vasut 2021-11-29 664 return regmap_register_patch(regmap, isl7998x_init_seq_2, 0cd375b25d1d51 Marek Vasut 2021-11-29 665 ARRAY_SIZE(isl7998x_init_seq_2)); 0cd375b25d1d51 Marek Vasut 2021-11-29 666 } 0cd375b25d1d51 Marek Vasut 2021-11-29 667 --- 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]
