diff options
author | terry-ht.chen <terry-ht.chen@broadcom.corp-partner.google.com> | 2020-06-10 17:24:45 +0800 |
---|---|---|
committer | Ahmed ElArabawy <arabawy@google.com> | 2020-06-12 13:50:59 +0000 |
commit | 0771ecce65496e2249f06b3ed78aa630a0cbd288 (patch) | |
tree | 0bc417e3d54ff4f285d78c96de4dcbd161dbb0d6 | |
parent | be4d388b3f6c62fe53420f42d0628fb65b935f37 (diff) | |
download | bcm43752-0771ecce65496e2249f06b3ed78aa630a0cbd288.tar.gz |
wifi: DHD driver crash when Softap set mac address
1. When softap mode, before set mac address, driver
execute dev_close, then driver delete the virtual
interface (wlan1). Then interface become NULL, cause
driver crash. So before delete the virtual interface,
driver needs to check dhd_allow_stop, to determine
delete interface or not.
2. Add error handler when set mac address fail.
Bug: 158318360
Test: Roger help to verify on Slider
Change-Id: I7ccc223ee7172b9545edd7f7d05f38b9fd474e8a
Signed-off-by: Roger Wang <wangroger@google.com>
-rw-r--r-- | dhd_linux.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/dhd_linux.c b/dhd_linux.c index b91b902..6589c27 100644 --- a/dhd_linux.c +++ b/dhd_linux.c @@ -2672,6 +2672,10 @@ _dhd_set_mac_address(dhd_info_t *dhd, int ifidx, uint8 *addr) ETHER_ADDR_LEN, NULL, 0, TRUE); if (ret < 0) { DHD_ERROR(("%s: set cur_etheraddr failed\n", dhd_ifname(&dhd->pub, ifidx))); +#ifdef DHD_NOTIFY_MAC_CHANGED + dhd_allow_stop = TRUE; + return ret; +#endif /* DHD_NOTIFY_MAC_CHANGED */ } else { memcpy(dhd->iflist[ifidx]->net->dev_addr, addr, ETHER_ADDR_LEN); if (ifidx == 0) @@ -7696,7 +7700,7 @@ dhd_static_if_stop(struct net_device *net) DHD_INFO(("[%s][STATIC_IF] Enter \n", net->name)); cfg = wl_get_cfg(net); - if (!IS_CFG80211_STATIC_IF(cfg, net)) { + if (!IS_CFG80211_STATIC_IF(cfg, net) || !dhd_allow_stop) { DHD_TRACE(("non-static interface (%s)..do nothing \n", net->name)); return BCME_OK; } |