staging: rtl8723au: Use kmemdup() instead of memcpy() to duplicate memory
authorBenoit Taine <benoit.taine@lip6.fr>
Thu, 22 May 2014 13:08:33 +0000 (15:08 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 23 May 2014 07:33:05 +0000 (16:33 +0900)
This issue was reported by coccicheck using the semantic patch
at scripts/coccinelle/api/memdup.cocci, and tested by compilation.

Signed-off-by: Benoit Taine <benoit.taine@lip6.fr>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c

index a29fa76..20c93e4 100644 (file)
@@ -339,12 +339,11 @@ int rtl8723a_FirmwareDownload(struct rtw_adapter *padapter)
                rtStatus = _FAIL;
                goto Exit;
        }
-       firmware_buf = kzalloc(fw->size, GFP_KERNEL);
+       firmware_buf = kmemdup(fw->data, fw->size, GFP_KERNEL);
        if (!firmware_buf) {
                rtStatus = _FAIL;
                goto Exit;
        }
-       memcpy(firmware_buf, fw->data, fw->size);
        buf = firmware_buf;
        fw_size = fw->size;
        release_firmware(fw);
index 06d73e5..f75a825 100644 (file)
@@ -1506,14 +1506,14 @@ static int rtw_cfg80211_set_probe_req_wpsp2pie(struct rtw_adapter *padapter,
                                pmlmepriv->wps_probe_req_ie = NULL;
                        }
 
-                       pmlmepriv->wps_probe_req_ie =
-                               kmalloc(wps_ielen, GFP_KERNEL);
+                       pmlmepriv->wps_probe_req_ie = kmemdup(wps_ie,
+                                                             wps_ielen,
+                                                             GFP_KERNEL);
                        if (pmlmepriv->wps_probe_req_ie == NULL) {
                                DBG_8723A("%s()-%d: kmalloc() ERROR!\n",
                                          __func__, __LINE__);
                                return -EINVAL;
                        }
-                       memcpy(pmlmepriv->wps_probe_req_ie, wps_ie, wps_ielen);
                        pmlmepriv->wps_probe_req_ie_len = wps_ielen;
                }
        }
@@ -1777,12 +1777,11 @@ static int rtw_cfg80211_set_wpa_ie(struct rtw_adapter *padapter, const u8 *pie,
                ret = -EINVAL;
                goto exit;
        }
-       buf = kzalloc(ielen, GFP_KERNEL);
+       buf = kmemdup(pie, ielen, GFP_KERNEL);
        if (buf == NULL) {
                ret = -ENOMEM;
                goto exit;
        }
-       memcpy(buf, pie, ielen);
 
        /* dump */
        DBG_8723A("set wpa_ie(length:%zu):\n", ielen);
@@ -3225,14 +3224,13 @@ static int rtw_cfg80211_set_beacon_wpsp2pie(struct net_device *ndev, char *buf,
                                pmlmepriv->wps_beacon_ie = NULL;
                        }
 
-                       pmlmepriv->wps_beacon_ie =
-                               kmalloc(wps_ielen, GFP_KERNEL);
+                       pmlmepriv->wps_beacon_ie = kmemdup(wps_ie, wps_ielen,
+                                                          GFP_KERNEL);
                        if (pmlmepriv->wps_beacon_ie == NULL) {
                                DBG_8723A("%s()-%d: kmalloc() ERROR!\n",
                                          __func__, __LINE__);
                                return -EINVAL;
                        }
-                       memcpy(pmlmepriv->wps_beacon_ie, wps_ie, wps_ielen);
                        pmlmepriv->wps_beacon_ie_len = wps_ielen;
 
 #ifdef CONFIG_8723AU_AP_MODE
@@ -3317,14 +3315,13 @@ static int rtw_cfg80211_set_assoc_resp_wpsp2pie(struct net_device *net,
                        pmlmepriv->wps_assoc_resp_ie = NULL;
                }
 
-               pmlmepriv->wps_assoc_resp_ie = kmalloc(len, GFP_KERNEL);
+               pmlmepriv->wps_assoc_resp_ie = kmemdup(buf, len, GFP_KERNEL);
                if (pmlmepriv->wps_assoc_resp_ie == NULL) {
                        DBG_8723A("%s()-%d: kmalloc() ERROR!\n",
                                  __func__, __LINE__);
                        return -EINVAL;
 
                }
-               memcpy(pmlmepriv->wps_assoc_resp_ie, buf, len);
                pmlmepriv->wps_assoc_resp_ie_len = len;
        }