Hi Rafał,

url:    
https://github.com/0day-ci/linux/commits/Rafa-Mi-ecki/brcmfmac-use-bphy_err-in-all-wiphy-related-code/20190214-140004
base:   
https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git 
master

smatch warnings:
drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c:114 
brcmf_fweh_call_event_handler() warn: variable dereferenced before check 'ifp' 
(see line 110)
drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c:187 
brcmf_fweh_handle_if_event() error: we previously assumed 'ifp' could be null 
(see line 184)
drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c:189 
brcmf_fweh_handle_if_event() warn: variable dereferenced before check 'ifp' 
(see line 187)

# 
https://github.com/0day-ci/linux/commit/e12dba9f5ed77216c5984a4b57ddc31ba23376c9
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout e12dba9f5ed77216c5984a4b57ddc31ba23376c9
vim +/ifp +114 drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c

5c36b99a drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  104  
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  105  static int brcmf_fweh_call_event_handler(struct 
brcmf_if *ifp,
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  106                                        enum 
brcmf_fweh_event_code code,
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  107                                        struct 
brcmf_event_msg *emsg,
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  108                                        void *data)
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  109  {
e12dba9f drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c Rafał Miłecki  
  2019-02-13 @110       struct wiphy *wiphy = ifp->drvr->wiphy;
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  111       struct brcmf_fweh_info *fweh;
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  112       int err = -EINVAL;
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  113  
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14 @114       if (ifp) {
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  115               fweh = &ifp->drvr->fweh;
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  116  
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  117               /* handle the event if valid interface and 
handler */
5857f9c6 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2013-04-05  118               if (fweh->evt_handler[code])
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  119                       err = fweh->evt_handler[code](ifp, 
emsg, data);
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  120               else
e12dba9f drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c Rafał Miłecki  
  2019-02-13  121                       bphy_err(wiphy, "unhandled event %d 
ignored\n", code);
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  122       } else {
e12dba9f drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c Rafał Miłecki  
  2019-02-13  123               bphy_err(wiphy, "no interface object\n");
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  124       }
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  125       return err;
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  126  }
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  127  
5c36b99a drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  128  /**
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  129   * brcmf_fweh_handle_if_event() - handle IF event.
5c36b99a drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  130   *
5c36b99a drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  131   * @drvr: driver information object.
5c36b99a drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  132   * @item: queue entry.
5c36b99a drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  133   * @ifpp: interface object (may change upon ADD action).
5c36b99a drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  134   */
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  135  static void brcmf_fweh_handle_if_event(struct brcmf_pub 
*drvr,
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  136                                      struct 
brcmf_event_msg *emsg,
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  137                                      void *data)
5c36b99a drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  138  {
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  139       struct brcmf_if_event *ifevent = data;
e12dba9f drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c Rafał Miłecki  
  2019-02-13  140       struct wiphy *wiphy = drvr->wiphy;
5c36b99a drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  141       struct brcmf_if *ifp;
ddddfed2 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2015-08-26  142       bool is_p2pdev;
5c36b99a drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  143       int err = 0;
5c36b99a drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  144  
37a869ec drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c Hante Meuleman 
  2015-10-29  145       brcmf_dbg(EVENT, "action: %u ifidx: %u bsscfgidx: %u 
flags: %u role: %u\n",
37a869ec drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c Hante Meuleman 
  2015-10-29  146                 ifevent->action, ifevent->ifidx, 
ifevent->bsscfgidx,
8fdd1578 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2013-04-05  147                 ifevent->flags, ifevent->role);
5c36b99a drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  148  
35a3cbcc drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Hante Meuleman 
  2015-09-18  149       /* The P2P Device interface event must not be ignored 
contrary to what
35a3cbcc drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Hante Meuleman 
  2015-09-18  150        * firmware tells us. Older firmware uses p2p noif, 
with sta role.
cb8dc71f drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Hante Meuleman 
  2015-09-18  151        * This should be accepted when p2pdev_setup is 
ongoing. TDLS setup will
cb8dc71f drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Hante Meuleman 
  2015-09-18  152        * use the same ifevent and should be ignored.
87c47903 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2014-09-12  153        */
35a3cbcc drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Hante Meuleman 
  2015-09-18  154       is_p2pdev = ((ifevent->flags & BRCMF_E_IF_FLAG_NOIF) &&
35a3cbcc drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Hante Meuleman 
  2015-09-18  155                    (ifevent->role == 
BRCMF_E_IF_ROLE_P2P_CLIENT ||
cb8dc71f drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Hante Meuleman 
  2015-09-18  156                     ((ifevent->role == BRCMF_E_IF_ROLE_STA) &&
cb8dc71f drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Hante Meuleman 
  2015-09-18  157                      (drvr->fweh.p2pdev_setup_ongoing))));
ddddfed2 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2015-08-26  158       if (!is_p2pdev && (ifevent->flags & 
BRCMF_E_IF_FLAG_NOIF)) {
2ee8382f drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2013-08-10  159               brcmf_dbg(EVENT, "event can be ignored\n");
2ee8382f drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2013-08-10  160               return;
2ee8382f drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2013-08-10  161       }
5c36b99a drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  162       if (ifevent->ifidx >= BRCMF_MAX_IFS) {
e12dba9f drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c Rafał Miłecki  
  2019-02-13  163               bphy_err(wiphy, "invalid interface index: %u\n",
e12dba9f drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c Rafał Miłecki  
  2019-02-13  164                        ifevent->ifidx);
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  165               return;
5c36b99a drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  166       }
5c36b99a drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  167  
37a869ec drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c Hante Meuleman 
  2015-10-29  168       ifp = drvr->iflist[ifevent->bsscfgidx];
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  169  
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  170       if (ifevent->action == BRCMF_E_IF_ADD) {
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  171               brcmf_dbg(EVENT, "adding %s (%pM)\n", 
emsg->ifname,
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  172                         emsg->addr);
37a869ec drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c Hante Meuleman 
  2015-10-29  173               ifp = brcmf_add_if(drvr, ifevent->bsscfgidx, 
ifevent->ifidx,
ddddfed2 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2015-08-26  174                                  is_p2pdev, 
emsg->ifname, emsg->addr);
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  175               if (IS_ERR(ifp))
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  176                       return;
2b76acdb drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Hante Meuleman 
  2015-10-08  177               if (!is_p2pdev)
9fdc64bb drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c Franky Lin     
  2017-03-10  178                       brcmf_proto_add_if(drvr, ifp);
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  179               if (!drvr->fweh.evt_handler[BRCMF_E_IF])
9390ace9 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2013-05-27  180                       if (brcmf_net_attach(ifp, false) < 
0)
9390ace9 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2013-05-27  181                               return;
5c36b99a drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  182       }
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  183  
87c47903 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2014-09-12 @184       if (ifp && ifevent->action == BRCMF_E_IF_CHANGE)
66ded1f8 drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c Franky Lin     
  2017-03-10  185               brcmf_proto_reset_if(drvr, ifp);
bb8c8063 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2013-04-03  186  
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14 @187       err = brcmf_fweh_call_event_handler(ifp, 
emsg->event_code, emsg, data);
3e0a97e1 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  188  
a63b0987 drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c Rafał Miłecki  
  2016-06-29 @189       if (ifp && ifevent->action == BRCMF_E_IF_DEL) {
a63b0987 drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c Rafał Miłecki  
  2016-06-29  190               bool armed = 
brcmf_cfg80211_vif_event_armed(drvr->config);
a63b0987 drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c Rafał Miłecki  
  2016-06-29  191  
a63b0987 drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c Rafał Miłecki  
  2016-06-29  192               /* Default handling in case no-one waits for 
this event */
a63b0987 drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c Rafał Miłecki  
  2016-06-29  193               if (!armed)
b50ddfa8 drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c Rafał Miłecki  
  2016-06-17  194                       brcmf_remove_interface(ifp, false);
bb8c8063 drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2013-04-03  195       }
a63b0987 drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c Rafał Miłecki  
  2016-06-29  196  }
5c36b99a drivers/net/wireless/brcm80211/brcmfmac/fweh.c          Arend van 
Spriel 2012-11-14  197  

:::::: The code at line 114 was first introduced by commit
:::::: 3e0a97e1507c482d2299a6ff24e597c1316ba60a brcmfmac: restructure handling 
of IF event

:::::: TO: Arend van Spriel <[email protected]>
:::::: CC: John W. Linville <[email protected]>

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

Reply via email to