[Intel-wired-lan] [jkirsher-next-queue:dev-queue 49/49] drivers/net/ethernet/intel/igc/igc_diag.c:161 igc_reg_test() error: uninitialized symbol 'b'.
Dan Carpenter
dan.carpenter at oracle.com
Mon Mar 23 07:42:21 UTC 2020
tree: https://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git dev-queue
head: a6017405fcd0cda0cd9f35b34cae92400cf9e3e3
commit: a6017405fcd0cda0cd9f35b34cae92400cf9e3e3 [49/49] igc: add support to interrupt, eeprom, registers and link self-tests
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp at intel.com>
Reported-by: Dan Carpenter <dan.carpenter at oracle.com>
smatch warnings:
drivers/net/ethernet/intel/igc/igc_diag.c:161 igc_reg_test() error: uninitialized symbol 'b'.
# https://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git/commit/?id=a6017405fcd0cda0cd9f35b34cae92400cf9e3e3
git remote add jkirsher-next-queue https://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
git remote update jkirsher-next-queue
git checkout a6017405fcd0cda0cd9f35b34cae92400cf9e3e3
vim +/b +161 drivers/net/ethernet/intel/igc/igc_diag.c
a6017405fcd0cd Vitaly Lifshits 2020-03-17 90 bool igc_reg_test(struct igc_adapter *adapter, u64 *data)
a6017405fcd0cd Vitaly Lifshits 2020-03-17 91 {
a6017405fcd0cd Vitaly Lifshits 2020-03-17 92 struct igc_reg_test *test = reg_test;
a6017405fcd0cd Vitaly Lifshits 2020-03-17 93 struct igc_hw *hw = &adapter->hw;
a6017405fcd0cd Vitaly Lifshits 2020-03-17 94 u32 value, before, after;
a6017405fcd0cd Vitaly Lifshits 2020-03-17 95 u32 i, toggle, b;
a6017405fcd0cd Vitaly Lifshits 2020-03-17 96
a6017405fcd0cd Vitaly Lifshits 2020-03-17 97 if (IGC_REMOVED(hw->hw_addr)) {
a6017405fcd0cd Vitaly Lifshits 2020-03-17 98 dev_err(&adapter->pdev->dev, "Adapter removed - register test blocked\n");
a6017405fcd0cd Vitaly Lifshits 2020-03-17 99 *data = 1;
a6017405fcd0cd Vitaly Lifshits 2020-03-17 100 return true;
This function returns true on failure and false on success?
a6017405fcd0cd Vitaly Lifshits 2020-03-17 101 }
a6017405fcd0cd Vitaly Lifshits 2020-03-17 102
a6017405fcd0cd Vitaly Lifshits 2020-03-17 103 /* Because the status register is such a special case,
a6017405fcd0cd Vitaly Lifshits 2020-03-17 104 * we handle it separately from the rest of the register
a6017405fcd0cd Vitaly Lifshits 2020-03-17 105 * tests. Some bits are read-only, some toggle, and some
a6017405fcd0cd Vitaly Lifshits 2020-03-17 106 * are writeable.
a6017405fcd0cd Vitaly Lifshits 2020-03-17 107 */
a6017405fcd0cd Vitaly Lifshits 2020-03-17 108
a6017405fcd0cd Vitaly Lifshits 2020-03-17 109 toggle = 0x6800D3;
a6017405fcd0cd Vitaly Lifshits 2020-03-17 110 before = rd32(IGC_STATUS);
a6017405fcd0cd Vitaly Lifshits 2020-03-17 111 value = before & toggle;
a6017405fcd0cd Vitaly Lifshits 2020-03-17 112 wr32(IGC_STATUS, toggle);
a6017405fcd0cd Vitaly Lifshits 2020-03-17 113 after = rd32(IGC_STATUS) & toggle;
a6017405fcd0cd Vitaly Lifshits 2020-03-17 114 if (value != after) {
a6017405fcd0cd Vitaly Lifshits 2020-03-17 115 dev_err(&adapter->pdev->dev,
a6017405fcd0cd Vitaly Lifshits 2020-03-17 116 "failed STATUS register test got: 0x%08X expected: 0x%08X\n",
a6017405fcd0cd Vitaly Lifshits 2020-03-17 117 after, value);
a6017405fcd0cd Vitaly Lifshits 2020-03-17 118 *data = 1;
a6017405fcd0cd Vitaly Lifshits 2020-03-17 119 return 1;
a6017405fcd0cd Vitaly Lifshits 2020-03-17 120 }
a6017405fcd0cd Vitaly Lifshits 2020-03-17 121 /* restore previous status */
a6017405fcd0cd Vitaly Lifshits 2020-03-17 122 wr32(IGC_STATUS, before);
a6017405fcd0cd Vitaly Lifshits 2020-03-17 123
a6017405fcd0cd Vitaly Lifshits 2020-03-17 124 /* Perform the remainder of the register test, looping through
a6017405fcd0cd Vitaly Lifshits 2020-03-17 125 * the test table until we either fail or reach the null entry.
a6017405fcd0cd Vitaly Lifshits 2020-03-17 126 */
a6017405fcd0cd Vitaly Lifshits 2020-03-17 127 while (test->reg) {
a6017405fcd0cd Vitaly Lifshits 2020-03-17 128 for (i = 0; i < test->array_len; i++) {
a6017405fcd0cd Vitaly Lifshits 2020-03-17 129 switch (test->test_type) {
a6017405fcd0cd Vitaly Lifshits 2020-03-17 130 case PATTERN_TEST:
a6017405fcd0cd Vitaly Lifshits 2020-03-17 131 b = reg_pattern_test(adapter, data,
a6017405fcd0cd Vitaly Lifshits 2020-03-17 132 test->reg + (i * 0x40),
a6017405fcd0cd Vitaly Lifshits 2020-03-17 133 test->mask,
a6017405fcd0cd Vitaly Lifshits 2020-03-17 134 test->write);
a6017405fcd0cd Vitaly Lifshits 2020-03-17 135 break;
a6017405fcd0cd Vitaly Lifshits 2020-03-17 136 case SET_READ_TEST:
a6017405fcd0cd Vitaly Lifshits 2020-03-17 137 b = reg_set_and_check(adapter, data,
a6017405fcd0cd Vitaly Lifshits 2020-03-17 138 test->reg + (i * 0x40),
a6017405fcd0cd Vitaly Lifshits 2020-03-17 139 test->mask,
a6017405fcd0cd Vitaly Lifshits 2020-03-17 140 test->write);
a6017405fcd0cd Vitaly Lifshits 2020-03-17 141 break;
a6017405fcd0cd Vitaly Lifshits 2020-03-17 142 case TABLE64_TEST_LO:
a6017405fcd0cd Vitaly Lifshits 2020-03-17 143 b = reg_pattern_test(adapter, data,
a6017405fcd0cd Vitaly Lifshits 2020-03-17 144 test->reg + (i * 8),
a6017405fcd0cd Vitaly Lifshits 2020-03-17 145 test->mask,
a6017405fcd0cd Vitaly Lifshits 2020-03-17 146 test->write);
a6017405fcd0cd Vitaly Lifshits 2020-03-17 147 break;
a6017405fcd0cd Vitaly Lifshits 2020-03-17 148 case TABLE64_TEST_HI:
a6017405fcd0cd Vitaly Lifshits 2020-03-17 149 b = reg_pattern_test(adapter, data,
a6017405fcd0cd Vitaly Lifshits 2020-03-17 150 test->reg + 4 + (i * 8),
a6017405fcd0cd Vitaly Lifshits 2020-03-17 151 test->mask,
a6017405fcd0cd Vitaly Lifshits 2020-03-17 152 test->write);
a6017405fcd0cd Vitaly Lifshits 2020-03-17 153 break;
a6017405fcd0cd Vitaly Lifshits 2020-03-17 154 case TABLE32_TEST:
a6017405fcd0cd Vitaly Lifshits 2020-03-17 155 b = reg_pattern_test(adapter, data,
a6017405fcd0cd Vitaly Lifshits 2020-03-17 156 test->reg + (i * 4),
a6017405fcd0cd Vitaly Lifshits 2020-03-17 157 test->mask,
a6017405fcd0cd Vitaly Lifshits 2020-03-17 158 test->write);
a6017405fcd0cd Vitaly Lifshits 2020-03-17 159 break;
No default case. Eventually GCC will fix its bug and start warning
about uninitialized variables again so you may as well fix it.
a6017405fcd0cd Vitaly Lifshits 2020-03-17 160 }
a6017405fcd0cd Vitaly Lifshits 2020-03-17 @161 if (b)
a6017405fcd0cd Vitaly Lifshits 2020-03-17 162 return true;
a6017405fcd0cd Vitaly Lifshits 2020-03-17 163 }
a6017405fcd0cd Vitaly Lifshits 2020-03-17 164 test++;
a6017405fcd0cd Vitaly Lifshits 2020-03-17 165 }
a6017405fcd0cd Vitaly Lifshits 2020-03-17 166 *data = 0;
a6017405fcd0cd Vitaly Lifshits 2020-03-17 167 return false;
a6017405fcd0cd Vitaly Lifshits 2020-03-17 168 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
More information about the Intel-wired-lan
mailing list