git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mwifiex: printk() overflow with 32-byte SSIDs
[pandora-kernel.git]
/
drivers
/
net
/
wireless
/
mwifiex
/
cfg80211.c
diff --git
a/drivers/net/wireless/mwifiex/cfg80211.c
b/drivers/net/wireless/mwifiex/cfg80211.c
index
462c710
..
4d7e334
100644
(file)
--- a/
drivers/net/wireless/mwifiex/cfg80211.c
+++ b/
drivers/net/wireless/mwifiex/cfg80211.c
@@
-545,9
+545,9
@@
mwifiex_dump_station_info(struct mwifiex_private *priv,
/*
* Bit 0 in tx_htinfo indicates that current Tx rate is 11n rate. Valid
/*
* Bit 0 in tx_htinfo indicates that current Tx rate is 11n rate. Valid
- * MCS index values for us are 0 to
7
.
+ * MCS index values for us are 0 to
15
.
*/
*/
- if ((priv->tx_htinfo & BIT(0)) && (priv->tx_rate <
8
)) {
+ if ((priv->tx_htinfo & BIT(0)) && (priv->tx_rate <
16
)) {
sinfo->txrate.mcs = priv->tx_rate;
sinfo->txrate.flags |= RATE_INFO_FLAGS_MCS;
/* 40MHz rate */
sinfo->txrate.mcs = priv->tx_rate;
sinfo->txrate.flags |= RATE_INFO_FLAGS_MCS;
/* 40MHz rate */
@@
-944,8
+944,9
@@
done:
}
is_scanning_required = 1;
} else {
}
is_scanning_required = 1;
} else {
- dev_dbg(priv->adapter->dev, "info: trying to associate to %s and bssid %pM\n",
- (char *) req_ssid.ssid, bss->bssid);
+ dev_dbg(priv->adapter->dev, "info: trying to associate to '%.*s' bssid %pM\n",
+ req_ssid.ssid_len, (char *)req_ssid.ssid,
+ bss->bssid);
memcpy(&priv->cfg_bssid, bss->bssid, ETH_ALEN);
break;
}
memcpy(&priv->cfg_bssid, bss->bssid, ETH_ALEN);
break;
}
@@
-989,8
+990,8
@@
mwifiex_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev,
priv->assoc_request = -EINPROGRESS;
priv->assoc_request = -EINPROGRESS;
- wiphy_dbg(wiphy, "info: Trying to associate to %s and bssid %pM\n",
-
(char *)
sme->ssid, sme->bssid);
+ wiphy_dbg(wiphy, "info: Trying to associate to %
.*
s and bssid %pM\n",
+
(int)sme->ssid_len, (char *)
sme->ssid, sme->bssid);
ret = mwifiex_cfg80211_assoc(priv, sme->ssid_len, sme->ssid, sme->bssid,
priv->bss_mode, sme->channel, sme, 0);
ret = mwifiex_cfg80211_assoc(priv, sme->ssid_len, sme->ssid, sme->bssid,
priv->bss_mode, sme->channel, sme, 0);
@@
-1026,8
+1027,8
@@
mwifiex_cfg80211_join_ibss(struct wiphy *wiphy, struct net_device *dev,
priv->ibss_join_request = -EINPROGRESS;
priv->ibss_join_request = -EINPROGRESS;
- wiphy_dbg(wiphy, "info: trying to join to %s and bssid %pM\n",
-
(char *)
params->ssid, params->bssid);
+ wiphy_dbg(wiphy, "info: trying to join to %
.*
s and bssid %pM\n",
+
params->ssid_len, (char *)
params->ssid, params->bssid);
ret = mwifiex_cfg80211_assoc(priv, params->ssid_len, params->ssid,
params->bssid, priv->bss_mode,
ret = mwifiex_cfg80211_assoc(priv, params->ssid_len, params->ssid,
params->bssid, priv->bss_mode,
@@
-1177,11
+1178,11
@@
struct net_device *mwifiex_add_virtual_intf(struct wiphy *wiphy,
void *mdev_priv;
if (!priv)
void *mdev_priv;
if (!priv)
- return
NULL
;
+ return
ERR_PTR(-EFAULT)
;
adapter = priv->adapter;
if (!adapter)
adapter = priv->adapter;
if (!adapter)
- return
NULL
;
+ return
ERR_PTR(-EFAULT)
;
switch (type) {
case NL80211_IFTYPE_UNSPECIFIED:
switch (type) {
case NL80211_IFTYPE_UNSPECIFIED:
@@
-1190,7
+1191,7
@@
struct net_device *mwifiex_add_virtual_intf(struct wiphy *wiphy,
if (priv->bss_mode) {
wiphy_err(wiphy, "cannot create multiple"
" station/adhoc interfaces\n");
if (priv->bss_mode) {
wiphy_err(wiphy, "cannot create multiple"
" station/adhoc interfaces\n");
- return
NULL
;
+ return
ERR_PTR(-EINVAL)
;
}
if (type == NL80211_IFTYPE_UNSPECIFIED)
}
if (type == NL80211_IFTYPE_UNSPECIFIED)
@@
-1208,14
+1209,15
@@
struct net_device *mwifiex_add_virtual_intf(struct wiphy *wiphy,
break;
default:
wiphy_err(wiphy, "type not supported\n");
break;
default:
wiphy_err(wiphy, "type not supported\n");
- return
NULL
;
+ return
ERR_PTR(-EINVAL)
;
}
dev = alloc_netdev_mq(sizeof(struct mwifiex_private *), name,
ether_setup, 1);
if (!dev) {
wiphy_err(wiphy, "no memory available for netdevice\n");
}
dev = alloc_netdev_mq(sizeof(struct mwifiex_private *), name,
ether_setup, 1);
if (!dev) {
wiphy_err(wiphy, "no memory available for netdevice\n");
- goto error;
+ priv->bss_mode = NL80211_IFTYPE_UNSPECIFIED;
+ return ERR_PTR(-ENOMEM);
}
dev_net_set(dev, wiphy_net(wiphy));
}
dev_net_set(dev, wiphy_net(wiphy));
@@
-1240,7
+1242,9
@@
struct net_device *mwifiex_add_virtual_intf(struct wiphy *wiphy,
/* Register network device */
if (register_netdevice(dev)) {
wiphy_err(wiphy, "cannot register virtual network device\n");
/* Register network device */
if (register_netdevice(dev)) {
wiphy_err(wiphy, "cannot register virtual network device\n");
- goto error;
+ free_netdev(dev);
+ priv->bss_mode = NL80211_IFTYPE_UNSPECIFIED;
+ return ERR_PTR(-EFAULT);
}
sema_init(&priv->async_sem, 1);
}
sema_init(&priv->async_sem, 1);
@@
-1252,12
+1256,6
@@
struct net_device *mwifiex_add_virtual_intf(struct wiphy *wiphy,
mwifiex_dev_debugfs_init(priv);
#endif
return dev;
mwifiex_dev_debugfs_init(priv);
#endif
return dev;
-error:
- if (dev && (dev->reg_state == NETREG_UNREGISTERED))
- free_netdev(dev);
- priv->bss_mode = NL80211_IFTYPE_UNSPECIFIED;
-
- return NULL;
}
EXPORT_SYMBOL_GPL(mwifiex_add_virtual_intf);
}
EXPORT_SYMBOL_GPL(mwifiex_add_virtual_intf);
@@
-1284,9
+1282,6
@@
int mwifiex_del_virtual_intf(struct wiphy *wiphy, struct net_device *dev)
if (dev->reg_state == NETREG_REGISTERED)
unregister_netdevice(dev);
if (dev->reg_state == NETREG_REGISTERED)
unregister_netdevice(dev);
- if (dev->reg_state == NETREG_UNREGISTERED)
- free_netdev(dev);
-
/* Clear the priv in adapter */
priv->netdev = NULL;
/* Clear the priv in adapter */
priv->netdev = NULL;