Hi Larry, FYI, there are new smatch warnings show up in
tree: git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next.git master head: 997bc71a3601b25dbbe3ac75b77b4f49582c0ae5 commit: a619d1abe20cc892ddd8f6f60345b24d43971fb4 [217/219] rtlwifi: rtl8723be: Add new driver drivers/net/wireless/rtlwifi/rtl8723be/fw.c:208 _rtl8723be_fill_h2c_command() warn: variable dereferenced before check 'rtlhal' (see line 69) drivers/net/wireless/rtlwifi/rtl8723be/hw.c:1732 _rtl8723be_read_adapter_info() error: __builtin_memcpy() '&rtlefuse->efuse_map[0][0]' too small (256 vs 512) git remote add wireless-next git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next.git git remote update wireless-next git checkout a619d1abe20cc892ddd8f6f60345b24d43971fb4 vim +/rtlhal +208 drivers/net/wireless/rtlwifi/rtl8723be/fw.c a619d1ab Larry Finger 2014-02-28 63 u8 idx; a619d1ab Larry Finger 2014-02-28 64 a619d1ab Larry Finger 2014-02-28 65 RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD, "come in\n"); a619d1ab Larry Finger 2014-02-28 66 a619d1ab Larry Finger 2014-02-28 67 while (true) { a619d1ab Larry Finger 2014-02-28 68 spin_lock_irqsave(&rtlpriv->locks.h2c_lock, flag); a619d1ab Larry Finger 2014-02-28 @69 if (rtlhal->h2c_setinprogress) { a619d1ab Larry Finger 2014-02-28 70 RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD, a619d1ab Larry Finger 2014-02-28 71 "H2C set in progress! Wait to set.." a619d1ab Larry Finger 2014-02-28 72 "element_id(%d).\n", element_id); a619d1ab Larry Finger 2014-02-28 73 a619d1ab Larry Finger 2014-02-28 74 while (rtlhal->h2c_setinprogress) { a619d1ab Larry Finger 2014-02-28 75 spin_unlock_irqrestore(&rtlpriv->locks.h2c_lock, a619d1ab Larry Finger 2014-02-28 76 flag); a619d1ab Larry Finger 2014-02-28 77 h2c_waitcounter++; a619d1ab Larry Finger 2014-02-28 78 RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD, a619d1ab Larry Finger 2014-02-28 79 "Wait 100 us (%d times)...\n", a619d1ab Larry Finger 2014-02-28 80 h2c_waitcounter); a619d1ab Larry Finger 2014-02-28 81 udelay(100); a619d1ab Larry Finger 2014-02-28 82 a619d1ab Larry Finger 2014-02-28 83 if (h2c_waitcounter > 1000) a619d1ab Larry Finger 2014-02-28 84 return; a619d1ab Larry Finger 2014-02-28 85 spin_lock_irqsave(&rtlpriv->locks.h2c_lock, a619d1ab Larry Finger 2014-02-28 86 flag); a619d1ab Larry Finger 2014-02-28 87 } a619d1ab Larry Finger 2014-02-28 88 spin_unlock_irqrestore(&rtlpriv->locks.h2c_lock, flag); a619d1ab Larry Finger 2014-02-28 89 } else { a619d1ab Larry Finger 2014-02-28 90 rtlhal->h2c_setinprogress = true; a619d1ab Larry Finger 2014-02-28 91 spin_unlock_irqrestore(&rtlpriv->locks.h2c_lock, flag); a619d1ab Larry Finger 2014-02-28 92 break; a619d1ab Larry Finger 2014-02-28 93 } a619d1ab Larry Finger 2014-02-28 94 } a619d1ab Larry Finger 2014-02-28 95 while (!bwrite_sucess) { a619d1ab Larry Finger 2014-02-28 96 wait_writeh2c_limit--; a619d1ab Larry Finger 2014-02-28 97 if (wait_writeh2c_limit == 0) { a619d1ab Larry Finger 2014-02-28 98 RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, a619d1ab Larry Finger 2014-02-28 99 "Write H2C fail because no trigger " a619d1ab Larry Finger 2014-02-28 100 "for FW INT!\n"); a619d1ab Larry Finger 2014-02-28 101 break; a619d1ab Larry Finger 2014-02-28 102 } a619d1ab Larry Finger 2014-02-28 103 boxnum = rtlhal->last_hmeboxnum; a619d1ab Larry Finger 2014-02-28 104 switch (boxnum) { a619d1ab Larry Finger 2014-02-28 105 case 0: a619d1ab Larry Finger 2014-02-28 106 box_reg = REG_HMEBOX_0; a619d1ab Larry Finger 2014-02-28 107 box_extreg = REG_HMEBOX_EXT_0; a619d1ab Larry Finger 2014-02-28 108 break; a619d1ab Larry Finger 2014-02-28 109 case 1: a619d1ab Larry Finger 2014-02-28 110 box_reg = REG_HMEBOX_1; a619d1ab Larry Finger 2014-02-28 111 box_extreg = REG_HMEBOX_EXT_1; a619d1ab Larry Finger 2014-02-28 112 break; a619d1ab Larry Finger 2014-02-28 113 case 2: a619d1ab Larry Finger 2014-02-28 114 box_reg = REG_HMEBOX_2; a619d1ab Larry Finger 2014-02-28 115 box_extreg = REG_HMEBOX_EXT_2; a619d1ab Larry Finger 2014-02-28 116 break; a619d1ab Larry Finger 2014-02-28 117 case 3: a619d1ab Larry Finger 2014-02-28 118 box_reg = REG_HMEBOX_3; a619d1ab Larry Finger 2014-02-28 119 box_extreg = REG_HMEBOX_EXT_3; a619d1ab Larry Finger 2014-02-28 120 break; a619d1ab Larry Finger 2014-02-28 121 default: a619d1ab Larry Finger 2014-02-28 122 RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, a619d1ab Larry Finger 2014-02-28 123 "switch case not processed\n"); a619d1ab Larry Finger 2014-02-28 124 break; a619d1ab Larry Finger 2014-02-28 125 } a619d1ab Larry Finger 2014-02-28 126 isfw_read = _rtl8723be_check_fw_read_last_h2c(hw, boxnum); a619d1ab Larry Finger 2014-02-28 127 while (!isfw_read) { a619d1ab Larry Finger 2014-02-28 128 wait_h2c_limit--; a619d1ab Larry Finger 2014-02-28 129 if (wait_h2c_limit == 0) { a619d1ab Larry Finger 2014-02-28 130 RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD, a619d1ab Larry Finger 2014-02-28 131 "Wating too long for FW read " a619d1ab Larry Finger 2014-02-28 132 "clear HMEBox(%d)!\n", boxnum); a619d1ab Larry Finger 2014-02-28 133 break; a619d1ab Larry Finger 2014-02-28 134 } a619d1ab Larry Finger 2014-02-28 135 udelay(10); a619d1ab Larry Finger 2014-02-28 136 a619d1ab Larry Finger 2014-02-28 137 isfw_read = _rtl8723be_check_fw_read_last_h2c(hw, a619d1ab Larry Finger 2014-02-28 138 boxnum); a619d1ab Larry Finger 2014-02-28 139 u1b_tmp = rtl_read_byte(rtlpriv, 0x130); a619d1ab Larry Finger 2014-02-28 140 RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD, a619d1ab Larry Finger 2014-02-28 141 "Wating for FW read clear HMEBox(%d)!!! 0x130 = %2x\n", a619d1ab Larry Finger 2014-02-28 142 boxnum, u1b_tmp); a619d1ab Larry Finger 2014-02-28 143 } a619d1ab Larry Finger 2014-02-28 144 if (!isfw_read) { a619d1ab Larry Finger 2014-02-28 145 RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD, a619d1ab Larry Finger 2014-02-28 146 "Write H2C register BOX[%d] fail!!!!! " a619d1ab Larry Finger 2014-02-28 147 "Fw do not read.\n", boxnum); a619d1ab Larry Finger 2014-02-28 148 break; a619d1ab Larry Finger 2014-02-28 149 } a619d1ab Larry Finger 2014-02-28 150 memset(boxcontent, 0, sizeof(boxcontent)); a619d1ab Larry Finger 2014-02-28 151 memset(boxextcontent, 0, sizeof(boxextcontent)); a619d1ab Larry Finger 2014-02-28 152 boxcontent[0] = element_id; a619d1ab Larry Finger 2014-02-28 153 RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD, a619d1ab Larry Finger 2014-02-28 154 "Write element_id box_reg(%4x) = %2x\n", a619d1ab Larry Finger 2014-02-28 155 box_reg, element_id); a619d1ab Larry Finger 2014-02-28 156 a619d1ab Larry Finger 2014-02-28 157 switch (cmd_len) { a619d1ab Larry Finger 2014-02-28 158 case 1: a619d1ab Larry Finger 2014-02-28 159 case 2: a619d1ab Larry Finger 2014-02-28 160 case 3: a619d1ab Larry Finger 2014-02-28 161 /*boxcontent[0] &= ~(BIT(7));*/ a619d1ab Larry Finger 2014-02-28 162 memcpy((u8 *)(boxcontent) + 1, a619d1ab Larry Finger 2014-02-28 163 p_cmdbuffer + buf_index, cmd_len); a619d1ab Larry Finger 2014-02-28 164 a619d1ab Larry Finger 2014-02-28 165 for (idx = 0; idx < 4; idx++) { a619d1ab Larry Finger 2014-02-28 166 rtl_write_byte(rtlpriv, box_reg + idx, a619d1ab Larry Finger 2014-02-28 167 boxcontent[idx]); a619d1ab Larry Finger 2014-02-28 168 } a619d1ab Larry Finger 2014-02-28 169 break; a619d1ab Larry Finger 2014-02-28 170 case 4: a619d1ab Larry Finger 2014-02-28 171 case 5: a619d1ab Larry Finger 2014-02-28 172 case 6: a619d1ab Larry Finger 2014-02-28 173 case 7: a619d1ab Larry Finger 2014-02-28 174 /*boxcontent[0] |= (BIT(7));*/ a619d1ab Larry Finger 2014-02-28 175 memcpy((u8 *)(boxextcontent), a619d1ab Larry Finger 2014-02-28 176 p_cmdbuffer + buf_index+3, cmd_len-3); a619d1ab Larry Finger 2014-02-28 177 memcpy((u8 *)(boxcontent) + 1, a619d1ab Larry Finger 2014-02-28 178 p_cmdbuffer + buf_index, 3); a619d1ab Larry Finger 2014-02-28 179 a619d1ab Larry Finger 2014-02-28 180 for (idx = 0; idx < 4; idx++) { a619d1ab Larry Finger 2014-02-28 181 rtl_write_byte(rtlpriv, box_extreg + idx, a619d1ab Larry Finger 2014-02-28 182 boxextcontent[idx]); a619d1ab Larry Finger 2014-02-28 183 } a619d1ab Larry Finger 2014-02-28 184 for (idx = 0; idx < 4; idx++) { a619d1ab Larry Finger 2014-02-28 185 rtl_write_byte(rtlpriv, box_reg + idx, a619d1ab Larry Finger 2014-02-28 186 boxcontent[idx]); a619d1ab Larry Finger 2014-02-28 187 } a619d1ab Larry Finger 2014-02-28 188 break; a619d1ab Larry Finger 2014-02-28 189 default: a619d1ab Larry Finger 2014-02-28 190 RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, a619d1ab Larry Finger 2014-02-28 191 "switch case not process\n"); a619d1ab Larry Finger 2014-02-28 192 break; a619d1ab Larry Finger 2014-02-28 193 } a619d1ab Larry Finger 2014-02-28 194 bwrite_sucess = true; a619d1ab Larry Finger 2014-02-28 195 a619d1ab Larry Finger 2014-02-28 196 rtlhal->last_hmeboxnum = boxnum + 1; a619d1ab Larry Finger 2014-02-28 197 if (rtlhal->last_hmeboxnum == 4) a619d1ab Larry Finger 2014-02-28 198 rtlhal->last_hmeboxnum = 0; a619d1ab Larry Finger 2014-02-28 199 a619d1ab Larry Finger 2014-02-28 200 RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD, a619d1ab Larry Finger 2014-02-28 201 "pHalData->last_hmeboxnum = %d\n", a619d1ab Larry Finger 2014-02-28 202 rtlhal->last_hmeboxnum); a619d1ab Larry Finger 2014-02-28 203 } a619d1ab Larry Finger 2014-02-28 204 if (!rtlpriv) { a619d1ab Larry Finger 2014-02-28 205 pr_err("rtlpriv bad\n"); a619d1ab Larry Finger 2014-02-28 206 return; a619d1ab Larry Finger 2014-02-28 207 } a619d1ab Larry Finger 2014-02-28 @208 if (!rtlhal) { a619d1ab Larry Finger 2014-02-28 209 pr_err("rtlhal bad\n"); a619d1ab Larry Finger 2014-02-28 210 return; a619d1ab Larry Finger 2014-02-28 211 } --- 0-DAY kernel build testing backend Open Source Technology Center http://lists.01.org/mailman/listinfo/kbuild Intel Corporation _______________________________________________ kbuild mailing list kbuild@lists.01.org https://lists.01.org/mailman/listinfo/kbuild