From 7ca6ba24c3e3ca852d46acf885c4982fab3bb895 Mon Sep 17 00:00:00 2001 From: Ajay Singh Date: Fri, 11 May 2018 13:43:15 +0530 Subject: [PATCH] staging: wilc1000: use kmemdup instead of kmalloc in add_network_to_shadow() Use kmemdup instead of kmalloc & memcpy in add_network_to_shadow(). Also added code to set 'ies_len' to zero in case of memory allocation failure. Signed-off-by: Ajay Singh Signed-off-by: Greg Kroah-Hartman --- drivers/staging/wilc1000/wilc_wfi_cfgoperations.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c index c730323cab87..32bdefb91001 100644 --- a/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c +++ b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c @@ -327,12 +327,15 @@ static void add_network_to_shadow(struct network_info *nw_info, shadow_nw_info->beacon_period = nw_info->beacon_period; shadow_nw_info->dtim_period = nw_info->dtim_period; shadow_nw_info->ch = nw_info->ch; - shadow_nw_info->ies_len = nw_info->ies_len; shadow_nw_info->tsf_hi = nw_info->tsf_hi; if (ap_found != -1) kfree(shadow_nw_info->ies); - shadow_nw_info->ies = kmalloc(nw_info->ies_len, GFP_KERNEL); - memcpy(shadow_nw_info->ies, nw_info->ies, nw_info->ies_len); + shadow_nw_info->ies = kmemdup(nw_info->ies, nw_info->ies_len, + GFP_KERNEL); + if (shadow_nw_info->ies) + shadow_nw_info->ies_len = nw_info->ies_len; + else + shadow_nw_info->ies_len = 0; shadow_nw_info->time_scan = jiffies; shadow_nw_info->time_scan_cached = jiffies; shadow_nw_info->found = 1;