Ticket #2284: madwifi-r4020-gcc4.4.diff

File madwifi-r4020-gcc4.4.diff, 3.3 kB (added by Andras Korn, 3 years ago)

gcc4.4 patch for r4020

  • net80211/ieee80211_wireless.c

    old new  
    16281628{ 
    16291629        struct ieee80211vap *vap = netdev_priv(dev); 
    16301630        struct ieee80211com *ic = vap->iv_ic; 
    1631         struct waplistreq req;          /* XXX off stack */ 
     1631        struct waplistreq *req = kmalloc(sizeof (struct waplistreq), GFP_KERNEL); 
     1632        if (!req) { 
     1633                return -ENOMEM; 
     1634        } 
    16321635 
    1633         req.vap = vap; 
    1634         req.i = 0; 
    1635         ieee80211_scan_iterate(ic, waplist_cb, &req); 
     1636        req->vap = vap; 
     1637        req->i = 0; 
     1638        ieee80211_scan_iterate(ic, waplist_cb, req); 
    16361639 
    1637         data->length = req.i; 
    1638         memcpy(extra, &req.addr, req.i * sizeof(req.addr[0])); 
     1640        data->length = req->i; 
     1641        memcpy(extra, &req->addr, req->i * sizeof(req->addr[0])); 
    16391642        data->flags = 1;                /* signal quality present (sort of) */ 
    1640         memcpy(extra + req.i * sizeof(req.addr[0]), &req.qual, 
    1641                 req.i * sizeof(req.qual[0])); 
     1643        memcpy(extra + req->i * sizeof(req->addr[0]), &req->qual, 
     1644                req->i * sizeof(req->qual[0])); 
    16421645 
     1646        kfree (req); 
     1647 
    16431648        return 0; 
    16441649} 
    16451650 
     
    39303935        struct ieee80211vap *vap = netdev_priv(dev); 
    39313936        struct ieee80211com *ic = vap->iv_ic; 
    39323937        struct ieee80211req_chaninfo *chans; 
    3933         u_int8_t reported[IEEE80211_CHAN_BYTES];       /* XXX stack usage? */ 
     3938        u_int8_t *reported = kzalloc(IEEE80211_CHAN_BYTES, GFP_KERNEL); 
    39343939        int i; 
    39353940 
    39363941        chans = kzalloc(sizeof(*chans), GFP_KERNEL); 
    3937         if (!chans) 
     3942        if (!reported || !chans) 
    39383943                return -ENOMEM; 
    39393944 
    39403945        memset(&reported, 0, sizeof(reported)); 
     
    39673972                } 
    39683973        } 
    39693974        memcpy(extra, chans, sizeof(struct ieee80211req_chaninfo)); 
     3975        kfree(reported); 
    39703976        kfree(chans); 
    39713977        return 0; 
    39723978} 
  • net80211/ieee80211_skb.c

    old new  
    105105{ 
    106106        va_list args; 
    107107        char skb_count[32] = { '\0' }; 
    108         char expanded_message[1024] = { '\0' }; 
     108        char *expanded_message = kmalloc(1024, GFP_KERNEL); 
     109        if (!expanded_message) { 
     110                return; 
     111        } 
     112 
    109113        if (show_counter) { 
    110114#ifdef IEEE80211_DEBUG_REFCNT 
    111115                snprintf(skb_count,  
     
    122126 
    123127        } 
    124128        va_start(args, message); 
    125         vsnprintf(expanded_message, sizeof(expanded_message), message, args); 
     129        vsnprintf(expanded_message, 1024, message, args); 
    126130        printk(KERN_DEBUG "%s: %s%s:%d %s\n", 
    127131                ((skb != NULL) ? DEV_NAME(skb->dev) : "none"), 
    128132                skb_count,  
    129133                func, line, 
    130134                expanded_message); 
     135        kfree(expanded_message); 
    131136        va_end(args); 
    132137} 
    133138 
  • net80211/ieee80211_linux.c

    old new  
    288288        static const char *tag = "STA-TRAFFIC-STAT"; 
    289289        struct net_device *dev = vap->iv_dev; 
    290290        union iwreq_data wreq; 
    291         char buf[1024]; 
    292  
    293         snprintf(buf, sizeof(buf), "%s\nmac=" MAC_FMT "\nrx_packets=%u\nrx_bytes=%llu\n" 
     291        char *buf = kmalloc(1024, GFP_KERNEL); 
     292        if (!buf) { 
     293                return; 
     294        } 
     295        snprintf(buf, 1024, "%s\nmac=" MAC_FMT "\nrx_packets=%u\nrx_bytes=%llu\n" 
    294296                        "tx_packets=%u\ntx_bytes=%llu\n", tag, 
    295297                        MAC_ADDR(ni->ni_macaddr), ni->ni_stats.ns_rx_data, 
    296298                        (unsigned long long)ni->ni_stats.ns_rx_bytes, 
     
    299301        memset(&wreq, 0, sizeof(wreq)); 
    300302        wreq.data.length = strlen(buf); 
    301303        wireless_send_event(dev, IWEVCUSTOM, &wreq, buf); 
     304        kfree(buf); 
    302305} 
    303306 
    304307void