Hi Quentin,

[auto build test WARNING on next-20170719]
[cannot apply to staging/staging-testing linus/master linux/master v4.13-rc1 
v4.12 v4.12-rc7 v4.13-rc1]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Quentin-Schulz/add-ESP8089-WiFi-chip-driver/20170723-143744
config: blackfin-allyesconfig (attached as .config)
compiler: bfin-uclinux-gcc (GCC) 6.2.0
reproduce:
        wget 
https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=blackfin 

Note: it may well be a FALSE warning. FWIW you are at least aware of it now.
http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings

All warnings (new ones prefixed by >>):

   drivers/staging//esp8089/esp_sip.c: In function 'sip_txq_process':
>> drivers/staging//esp8089/esp_sip.c:797:32: warning: 'offset' may be used 
>> uninitialized in this function [-Wmaybe-uninitialized]
     memcpy(sip->tx_aggr_write_ptr + offset, skb->data, skb->len);
            ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
   drivers/staging//esp8089/esp_sip.c:700:14: note: 'offset' was declared here
     u32 tx_len, offset;
                 ^~~~~~
   drivers/staging//esp8089/esp_sip.c: In function 'sip_poll_resetting_event':
>> drivers/staging//esp8089/esp_sip.c:1662:5: warning: 'ret' may be used 
>> uninitialized in this function [-Wmaybe-uninitialized]
     if (!ret) {
        ^
--
   drivers/staging//esp8089/esp_mac80211.c: In function 'esp_op_set_key':
>> drivers/staging//esp8089/esp_mac80211.c:529:6: warning: 'index' may be used 
>> uninitialized in this function [-Wmaybe-uninitialized]
      map[index].flag = 0;
         ^

vim +/offset +797 drivers/staging//esp8089/esp_sip.c

   691  
   692  /* setup sip header and tx info, copy pkt into aggr buf */
   693  static int sip_pack_pkt(struct esp_sip *sip, struct sk_buff *skb, int 
*pm_state)
   694  {
   695          struct ieee80211_tx_info *itx_info;
   696          struct sip_hdr *shdr;
   697          struct ieee80211_hdr *wh;
   698          struct esp_vif *evif;
   699          struct esp_node *node;
   700          u32 tx_len, offset;
   701          bool is_data = true;
   702          u8 sta_index;
   703          int alg;
   704  
   705          itx_info = IEEE80211_SKB_CB(skb);
   706          if (itx_info->flags == 0xffffffff) {
   707                  shdr = (struct sip_hdr *)skb->data;
   708                  is_data = false;
   709                  tx_len = skb->len;
   710          } else {
   711                  wh = (struct ieee80211_hdr *)skb->data;
   712                  evif = (struct esp_vif 
*)itx_info->control.vif->drv_priv;
   713                  /* update sip header */
   714                  shdr = (struct sip_hdr *)sip->tx_aggr_write_ptr;
   715  
   716                  shdr->fc[0] = 0;
   717                  shdr->fc[1] = 0;
   718  
   719                  if (itx_info->flags & IEEE80211_TX_CTL_AMPDU)
   720                          SIP_HDR_SET_TYPE(shdr->fc[0], SIP_DATA_AMPDU);
   721                  else
   722                          SIP_HDR_SET_TYPE(shdr->fc[0], SIP_DATA);
   723  
   724                  if (!evif->epub) {
   725                          sip_tx_status_report(sip, skb, itx_info, false);
   726                          atomic_dec(&sip->tx_data_pkt_queued);
   727                          return -EINVAL;
   728                  }
   729  
   730                  /* make room for encrypted pkt */
   731                  if (itx_info->control.hw_key) {
   732                          alg = 
esp_cipher2alg(itx_info->control.hw_key->cipher);
   733                          if (unlikely(alg == -1)) {
   734                                  sip_tx_status_report(sip, skb, 
itx_info, false);
   735                                  atomic_dec(&sip->tx_data_pkt_queued);
   736                                  return -1;
   737                          }
   738  
   739                          shdr->d_enc_flag = alg + 1;
   740                          shdr->d_hw_kid = 
itx_info->control.hw_key->hw_key_idx |
   741                                  (evif->index << 7);
   742                  } else {
   743                          shdr->d_enc_flag = 0;
   744                          shdr->d_hw_kid = evif->index << 7 | evif->index;
   745                  }
   746  
   747                  /* update sip tx info */
   748                  node = esp_get_node_by_addr(sip->epub, wh->addr1);
   749                  if (node)
   750                          sta_index = node->index;
   751                  else
   752                          sta_index = ESP_PUB_MAX_STA + 1;
   753  
   754                  SIP_HDR_SET_IFIDX(shdr->fc[0], evif->index << 3 | 
sta_index);
   755                  shdr->d_p2p = itx_info->control.vif->p2p;
   756  
   757                  if (evif->index == 1)
   758                          shdr->d_p2p = 1;
   759  
   760                  shdr->d_ac = skb_get_queue_mapping(skb);
   761                  shdr->d_tid = skb->priority & 
IEEE80211_QOS_CTL_TAG1D_MASK;
   762  
   763                  wh = (struct ieee80211_hdr *)skb->data;
   764  
   765                  if (ieee80211_is_mgmt(wh->frame_control)) {
   766                          /* addba/delba/bar may use different tid/ac */
   767                          if (shdr->d_ac == WME_AC_VO)
   768                                  shdr->d_tid = 7;
   769  
   770                          if (ieee80211_is_beacon(wh->frame_control)) {
   771                                  shdr->d_tid = 8;
   772                                  shdr->d_ac = 4;
   773                          }
   774                  }
   775  
   776                  if (check_ac_tid(skb->data, shdr->d_ac, shdr->d_tid)) {
   777                          shdr->d_ac = WME_AC_BE;
   778                          shdr->d_tid = 0;
   779                  }
   780  
   781                  /* make sure data is start at 4 bytes aligned addr. */
   782                  offset = roundup(sizeof(struct sip_hdr), 4);
   783  
   784                  if (SIP_HDR_IS_AMPDU(shdr)) {
   785                          memset(sip->tx_aggr_write_ptr + offset, 0,
   786                                 sizeof(struct esp_tx_ampdu_entry));
   787                          offset += roundup(sizeof(struct 
esp_tx_ampdu_entry), 4);
   788                  }
   789  
   790                  tx_len = offset + skb->len;
   791                  shdr->len = tx_len;     /* actual len */
   792          }
   793  
   794          shdr->seq = sip->txseq++;
   795  
   796          /* copy skb to aggr buf */
 > 797          memcpy(sip->tx_aggr_write_ptr + offset, skb->data, skb->len);
   798  
   799          if (is_data) {
   800                  spin_lock_bh(&sip->epub->tx_lock);
   801                  sip->txdataseq = shdr->seq;
   802                  spin_unlock_bh(&sip->epub->tx_lock);
   803  
   804                  /* fake a tx_status and report to mac80211 stack to 
speed up tx, may affect
   805                   *  1) rate control (now it's all in target, so should 
be OK)
   806                   *  2) ps mode, mac80211 want to check ACK of 
ps/nulldata to see if AP is awake
   807                   *  3) BAR, mac80211 do BAR by checking ACK
   808                   *
   809                   *  XXX: need to adjust for 11n, e.g. report tx_status 
according to BA received in target
   810                   */
   811                  sip_tx_status_report(sip, skb, itx_info, true);
   812                  atomic_dec(&sip->tx_data_pkt_queued);
   813  
   814                  STRACE_TX_DATA_INC();
   815          } else {
   816                  /* check pm state here */
   817  
   818                  /* no need to hold ctrl skb */
   819                  sip_free_ctrl_skbuff(sip, skb);
   820                  STRACE_TX_CMD_INC();
   821          }
   822  
   823          /* TBD: roundup here or whole aggr-buf */
   824          tx_len = roundup(tx_len, sip->tx_blksz);
   825  
   826          sip->tx_aggr_write_ptr += tx_len;
   827          sip->tx_tot_len += tx_len;
   828  
   829          return 0;
   830  }
   831  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to