From: proski Date: Tue, 12 May 2009 20:05:46 +0000 (+0000) Subject: Fix all cases of stack usage exceeding 1024 bytes X-Git-Url: http://git.ozo.com/?a=commitdiff_plain;h=ba3592a8cd2697ce955016d15f73933a15900618;p=madwifi%2F.git Fix all cases of stack usage exceeding 1024 bytes git-svn-id: http://madwifi-project.org/svn/madwifi/trunk@4022 0192ed92-7a03-0410-a25b-9323aeb14dbd --- diff --git a/net80211/ieee80211_linux.c b/net80211/ieee80211_linux.c index 9d327a2..a64239f 100644 --- a/net80211/ieee80211_linux.c +++ b/net80211/ieee80211_linux.c @@ -288,7 +288,7 @@ ieee80211_notify_sta_stats(struct ieee80211_node *ni) static const char *tag = "STA-TRAFFIC-STAT"; struct net_device *dev = vap->iv_dev; union iwreq_data wreq; - char buf[1024]; + char buf[256]; snprintf(buf, sizeof(buf), "%s\nmac=" MAC_FMT "\nrx_packets=%u\nrx_bytes=%llu\n" "tx_packets=%u\ntx_bytes=%llu\n", tag, diff --git a/net80211/ieee80211_skb.c b/net80211/ieee80211_skb.c index ca3e510..c881cf5 100644 --- a/net80211/ieee80211_skb.c +++ b/net80211/ieee80211_skb.c @@ -105,7 +105,7 @@ static void skb_print_message( { va_list args; char skb_count[32] = { '\0' }; - char expanded_message[1024] = { '\0' }; + char expanded_message[256] = { '\0' }; if (show_counter) { #ifdef IEEE80211_DEBUG_REFCNT snprintf(skb_count, diff --git a/net80211/ieee80211_wireless.c b/net80211/ieee80211_wireless.c index 5eb1c44..12cabf8 100644 --- a/net80211/ieee80211_wireless.c +++ b/net80211/ieee80211_wireless.c @@ -1628,17 +1628,21 @@ ieee80211_ioctl_iwaplist(struct net_device *dev, struct iw_request_info *info, { struct ieee80211vap *vap = netdev_priv(dev); struct ieee80211com *ic = vap->iv_ic; - struct waplistreq req; /* XXX off stack */ + struct waplistreq *req; - req.vap = vap; - req.i = 0; - ieee80211_scan_iterate(ic, waplist_cb, &req); + req = kmalloc(sizeof(struct waplistreq), GFP_KERNEL); + if (!req) + return -ENOMEM; + + req->vap = vap; + req->i = 0; + ieee80211_scan_iterate(ic, waplist_cb, req); - data->length = req.i; - memcpy(extra, &req.addr, req.i * sizeof(req.addr[0])); + data->length = req->i; + memcpy(extra, &req->addr, req->i * sizeof(req->addr[0])); data->flags = 1; /* signal quality present (sort of) */ - memcpy(extra + req.i * sizeof(req.addr[0]), &req.qual, - req.i * sizeof(req.qual[0])); + memcpy(extra + req->i * sizeof(req->addr[0]), &req->qual, + req->i * sizeof(req->qual[0])); return 0; }