diff options
author | John W. Linville <linville@tuxdriver.com> | 2007-04-04 15:30:35 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-04-13 13:47:17 -0700 |
commit | 3c163bc0b44d31618fa8f08a5e149335f6c8cbc4 (patch) | |
tree | cbdf6d9a616e76ab6934a85d2243acaec8ba2d7f | |
parent | b95c2d9a59eab707fe82629fd7d0b4f3656d93be (diff) | |
download | linux-stable-3c163bc0b44d31618fa8f08a5e149335f6c8cbc4.tar.gz linux-stable-3c163bc0b44d31618fa8f08a5e149335f6c8cbc4.tar.bz2 linux-stable-3c163bc0b44d31618fa8f08a5e149335f6c8cbc4.zip |
softmac: avoid assert in ieee80211softmac_wx_get_rate
[PATCH] softmac: avoid assert in ieee80211softmac_wx_get_rate
Unconfigured bcm43xx device can hit an assert() during wx_get_rate
queries. This is because bcm43xx calls ieee80211softmac_start late
(i.e. during open instead of probe).
bcm43xx_net_open ->
bcm43xx_init_board ->
bcm43xx_select_wireless_core ->
ieee80211softmac_start
Fix is to check that device is running before completing
ieee80211softmac_wx_get_rate.
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Cc: Chuck Ebbert <cebbert@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | net/ieee80211/softmac/ieee80211softmac_wx.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/net/ieee80211/softmac/ieee80211softmac_wx.c b/net/ieee80211/softmac/ieee80211softmac_wx.c index fa2f7da606a9..fb58e03b3fbd 100644 --- a/net/ieee80211/softmac/ieee80211softmac_wx.c +++ b/net/ieee80211/softmac/ieee80211softmac_wx.c @@ -265,6 +265,12 @@ ieee80211softmac_wx_get_rate(struct net_device *net_dev, int err = -EINVAL; spin_lock_irqsave(&mac->lock, flags); + + if (unlikely(!mac->running)) { + err = -ENODEV; + goto out_unlock; + } + switch (mac->txrates.default_rate) { case IEEE80211_CCK_RATE_1MB: data->bitrate.value = 1000000; |