From: Greg Goldman Date: Tue, 29 Jun 2010 20:29:49 +0000 (-0700) Subject: network: wireless: bcm4329: Fix BUS DOWN in IOCTL X-Git-Tag: firefly_0821_release~9833^2~5^2~177 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=0631793701ed5806adf1ed9d6c0afe9c41cdfc0b;p=firefly-linux-kernel-4.4.55.git network: wireless: bcm4329: Fix BUS DOWN in IOCTL Signed-off-by: Dmitry Shmidt --- diff --git a/drivers/net/wireless/bcm4329/dhd_cdc.c b/drivers/net/wireless/bcm4329/dhd_cdc.c index 464aaf5033dd..c95ca9b3471f 100644 --- a/drivers/net/wireless/bcm4329/dhd_cdc.c +++ b/drivers/net/wireless/bcm4329/dhd_cdc.c @@ -525,7 +525,8 @@ dhd_prot_init(dhd_pub_t *dhd) strcpy(buf, "cur_etheraddr"); ret = dhdcdc_query_ioctl(dhd, 0, WLC_GET_VAR, buf, sizeof(buf)); if (ret < 0) { - goto fail; + dhd_os_proto_unblock(dhd); + return ret; } memcpy(dhd->mac.octet, buf, ETHER_ADDR_LEN); @@ -538,8 +539,6 @@ dhd_prot_init(dhd_pub_t *dhd) /* Always assumes wl for now */ dhd->iswl = TRUE; -fail: - return ret; } diff --git a/drivers/net/wireless/bcm4329/dhd_linux.c b/drivers/net/wireless/bcm4329/dhd_linux.c index da2cb640228d..27b1f55de3d1 100644 --- a/drivers/net/wireless/bcm4329/dhd_linux.c +++ b/drivers/net/wireless/bcm4329/dhd_linux.c @@ -1764,11 +1764,13 @@ dhd_ioctl_entry(struct net_device *net, struct ifreq *ifr, int cmd) bcmerror = dhd_prot_ioctl(&dhd->pub, ifidx, (wl_ioctl_t *)&ioc, buf, buflen); - if (bcmerror == -ETIMEDOUT) { +done: + if ((bcmerror == -ETIMEDOUT) || ((dhd->pub.busstate == DHD_BUS_DOWN) && + (!dhd->pub.dongle_reset))) { DHD_ERROR(("%s: Event HANG send up\n", __FUNCTION__)); wl_iw_send_priv_event(net, "HANG"); } -done: + if (!bcmerror && buf && ioc.buf) { if (copy_to_user(ioc.buf, buf, buflen)) bcmerror = -EFAULT;