/* parsing WPA/WPA2 IE */
        {
-               u8 buf[MAX_WPA_IE_LEN];
+               u8 *buf;
                u8 wpa_ie[255], rsn_ie[255];
                u16 wpa_len = 0, rsn_len = 0;
                u8 *p;
 
+               buf = kzalloc(MAX_WPA_IE_LEN, GFP_ATOMIC);
+               if (!buf)
+                       return start;
+
                rtw_get_sec_ie(pnetwork->network.ies, pnetwork->network.ie_length, rsn_ie, &rsn_len, wpa_ie, &wpa_len);
                RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, ("rtw_wx_get_scan: ssid =%s\n", pnetwork->network.ssid.ssid));
                RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, ("rtw_wx_get_scan: wpa_len =%d rsn_len =%d\n", wpa_len, rsn_len));
 
                if (wpa_len > 0) {
                        p = buf;
-                       memset(buf, 0, MAX_WPA_IE_LEN);
                        p += sprintf(p, "wpa_ie=");
                        for (i = 0; i < wpa_len; i++)
                                p += sprintf(p, "%02x", wpa_ie[i]);
                }
                if (rsn_len > 0) {
                        p = buf;
-                       memset(buf, 0, MAX_WPA_IE_LEN);
                        p += sprintf(p, "rsn_ie=");
                        for (i = 0; i < rsn_len; i++)
                                p += sprintf(p, "%02x", rsn_ie[i]);
                        iwe.u.data.length = rsn_len;
                        start = iwe_stream_add_point(info, start, stop, &iwe, rsn_ie);
                }
+               kfree(buf);
        }
 
        {/* parsing WPS IE */