drivers/net/ethernet/davicom/dm9051.c:610 dm9051_get_eeprom() error: uninitialized symbol 'ret'.

From: Dan Carpenter
Date: Thu May 12 2022 - 06:18:41 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: feb9c5e19e913b53cb536a7aa7c9f20107bb51ec
commit: 2dc95a4d30eddac9679f295ba4304a7ab0e4ae02 net: Add dm9051 driver
config: csky-randconfig-m031-20220508 (https://download.01.org/0day-ci/archive/20220512/202205121231.hPQrGSE5-lkp@xxxxxxxxx/config)
compiler: csky-linux-gcc (GCC) 11.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>
Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>

New smatch warnings:
drivers/net/ethernet/davicom/dm9051.c:610 dm9051_get_eeprom() error: uninitialized symbol 'ret'.
drivers/net/ethernet/davicom/dm9051.c:632 dm9051_set_eeprom() error: uninitialized symbol 'ret'.

Old smatch warnings:
drivers/net/ethernet/davicom/dm9051.c:527 dm9051_map_chipid() warn: unsigned 'ret' is never less than zero.

vim +/ret +610 drivers/net/ethernet/davicom/dm9051.c

2dc95a4d30edda Joseph CHAMG 2022-02-11 592 static int dm9051_get_eeprom(struct net_device *ndev,
2dc95a4d30edda Joseph CHAMG 2022-02-11 593 struct ethtool_eeprom *ee, u8 *data)
2dc95a4d30edda Joseph CHAMG 2022-02-11 594 {
2dc95a4d30edda Joseph CHAMG 2022-02-11 595 struct board_info *db = to_dm9051_board(ndev);
2dc95a4d30edda Joseph CHAMG 2022-02-11 596 int offset = ee->offset;
2dc95a4d30edda Joseph CHAMG 2022-02-11 597 int len = ee->len;
2dc95a4d30edda Joseph CHAMG 2022-02-11 598 int i, ret;
2dc95a4d30edda Joseph CHAMG 2022-02-11 599
2dc95a4d30edda Joseph CHAMG 2022-02-11 600 if ((len | offset) & 1)

Can len be zero? The kbuild-bot isn't doing cross function analysis so
it just assumes that it can be zero

2dc95a4d30edda Joseph CHAMG 2022-02-11 601 return -EINVAL;
2dc95a4d30edda Joseph CHAMG 2022-02-11 602
2dc95a4d30edda Joseph CHAMG 2022-02-11 603 ee->magic = DM_EEPROM_MAGIC;
2dc95a4d30edda Joseph CHAMG 2022-02-11 604
2dc95a4d30edda Joseph CHAMG 2022-02-11 605 for (i = 0; i < len; i += 2) {
2dc95a4d30edda Joseph CHAMG 2022-02-11 606 ret = dm9051_eeprom_read(db, (offset + i) / 2, data + i);
2dc95a4d30edda Joseph CHAMG 2022-02-11 607 if (ret)
2dc95a4d30edda Joseph CHAMG 2022-02-11 608 break;
2dc95a4d30edda Joseph CHAMG 2022-02-11 609 }
2dc95a4d30edda Joseph CHAMG 2022-02-11 @610 return ret;
2dc95a4d30edda Joseph CHAMG 2022-02-11 611 }
2dc95a4d30edda Joseph CHAMG 2022-02-11 612
2dc95a4d30edda Joseph CHAMG 2022-02-11 613 static int dm9051_set_eeprom(struct net_device *ndev,
2dc95a4d30edda Joseph CHAMG 2022-02-11 614 struct ethtool_eeprom *ee, u8 *data)
2dc95a4d30edda Joseph CHAMG 2022-02-11 615 {
2dc95a4d30edda Joseph CHAMG 2022-02-11 616 struct board_info *db = to_dm9051_board(ndev);
2dc95a4d30edda Joseph CHAMG 2022-02-11 617 int offset = ee->offset;
2dc95a4d30edda Joseph CHAMG 2022-02-11 618 int len = ee->len;
2dc95a4d30edda Joseph CHAMG 2022-02-11 619 int i, ret;
2dc95a4d30edda Joseph CHAMG 2022-02-11 620
2dc95a4d30edda Joseph CHAMG 2022-02-11 621 if ((len | offset) & 1)
2dc95a4d30edda Joseph CHAMG 2022-02-11 622 return -EINVAL;
2dc95a4d30edda Joseph CHAMG 2022-02-11 623
2dc95a4d30edda Joseph CHAMG 2022-02-11 624 if (ee->magic != DM_EEPROM_MAGIC)
2dc95a4d30edda Joseph CHAMG 2022-02-11 625 return -EINVAL;
2dc95a4d30edda Joseph CHAMG 2022-02-11 626
2dc95a4d30edda Joseph CHAMG 2022-02-11 627 for (i = 0; i < len; i += 2) {
2dc95a4d30edda Joseph CHAMG 2022-02-11 628 ret = dm9051_eeprom_write(db, (offset + i) / 2, data + i);
2dc95a4d30edda Joseph CHAMG 2022-02-11 629 if (ret)
2dc95a4d30edda Joseph CHAMG 2022-02-11 630 break;
2dc95a4d30edda Joseph CHAMG 2022-02-11 631 }
2dc95a4d30edda Joseph CHAMG 2022-02-11 @632 return ret;
2dc95a4d30edda Joseph CHAMG 2022-02-11 633 }

--
0-DAY CI Kernel Test Service
https://01.org/lkp