hc
2023-11-06 e3e12f52b214121840b44c91de5b3e5af5d3eb84
kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/wl_iw.c
....@@ -678,14 +678,16 @@
678678 struct dhd_pub *dhd = dhd_get_pub(dev);
679679 struct iw_freq *fwrq = &wrqu->freq;
680680 int error;
681
+ u32 val;
681682 chanspec_t chanspec = 0;
682683 int ctl_chan;
683684
684685 WL_TRACE(("%s: SIOCGIWFREQ\n", dev->name));
685686
686687 DHD_CHECK(dhd, dev);
687
- if ((error = dev_wlc_intvar_get(dev, "chanspec", (s32 *)&chanspec)))
688
+ if ((error = dev_wlc_intvar_get(dev, "chanspec", &val)))
688689 return error;
690
+ chanspec = val;
689691 chanspec = wl_ext_chspec_driver_to_host(dhd, chanspec);
690692 ctl_chan = wf_chspec_ctlchan(chanspec);
691693
....@@ -1379,7 +1381,8 @@
13791381 struct dhd_pub *dhd = dhd_get_pub(dev);
13801382 wlc_ssid_t ssid;
13811383 #ifdef WL_ESCAN
1382
- wl_scan_info_t scan_info;
1384
+ wl_scan_info_t *scan_info = NULL;
1385
+ int err;
13831386 #else
13841387 wl_wext_info_t *wext_info = NULL;
13851388 iscan_info_t *iscan;
....@@ -1403,11 +1406,18 @@
14031406 }
14041407 }
14051408 #endif
1406
- memset(&scan_info, 0, sizeof(wl_scan_info_t));
1407
- scan_info.bcast_ssid = TRUE;
1408
- memcpy(scan_info.ssid.SSID, ssid.SSID, ssid.SSID_len);
1409
- scan_info.ssid.SSID_len = ssid.SSID_len;
1410
- return wl_escan_set_scan(dev, &scan_info);
1409
+ scan_info = kmalloc(sizeof(wl_scan_info_t), GFP_KERNEL);
1410
+ if (scan_info == NULL) {
1411
+ WL_ERROR(("kzalloc failed\n"));
1412
+ return -ENOMEM;
1413
+ }
1414
+ memset(scan_info, 0, sizeof(wl_scan_info_t));
1415
+ scan_info->bcast_ssid = TRUE;
1416
+ memcpy(scan_info->ssid.SSID, ssid.SSID, ssid.SSID_len);
1417
+ scan_info->ssid.SSID_len = ssid.SSID_len;
1418
+ err = wl_escan_set_scan(dev, scan_info);
1419
+ kfree(scan_info);
1420
+ return err;
14111421 #else
14121422 wext_info = dhd->wext_info;
14131423 iscan = &wext_info->iscan;