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

Reply via email to