From: Markus Elfring <elfr...@users.sourceforge.net>
Date: Wed, 12 Nov 2014 20:40:12 +0100

Memory releases were handled in an inefficient way by the implementation of
the efuse_phymap_to_logical() function in case of an allocation failure.
The corresponding clean-up was improved by reordering of kfree() calls
and a few adjustments for jump labels.

Reported-by: Julia Lawall <julia.law...@lip6.fr>
Signed-off-by: Markus Elfring <elfr...@users.sourceforge.net>
---
 drivers/staging/rtl8188eu/core/rtw_efuse.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/rtl8188eu/core/rtw_efuse.c 
b/drivers/staging/rtl8188eu/core/rtw_efuse.c
index 697876b..359f169 100644
--- a/drivers/staging/rtl8188eu/core/rtw_efuse.c
+++ b/drivers/staging/rtl8188eu/core/rtw_efuse.c
@@ -112,7 +112,7 @@ efuse_phymap_to_logical(u8 *phymap, u16 _offset, u16 
_size_byte, u8  *pbuf)
        eFuseWord = (u16 **)rtw_malloc2d(EFUSE_MAX_SECTION_88E, 
EFUSE_MAX_WORD_UNIT, sizeof(u16));
        if (eFuseWord == NULL) {
                DBG_88E("%s: alloc eFuseWord fail!\n", __func__);
-               goto exit;
+               goto cleanup1;
        }
 
        /*  0. Refresh efuse init map as all oxFF. */
@@ -130,7 +130,7 @@ efuse_phymap_to_logical(u8 *phymap, u16 _offset, u16 
_size_byte, u8  *pbuf)
                eFuse_Addr++;
        } else {
                DBG_88E("EFUSE is empty efuse_Addr-%d efuse_data =%x\n", 
eFuse_Addr, rtemp8);
-               goto exit;
+               goto cleanup2;
        }
 
        /*  */
@@ -209,10 +209,14 @@ efuse_phymap_to_logical(u8 *phymap, u16 _offset, u16 
_size_byte, u8  *pbuf)
        /*  5. Calculate Efuse utilization. */
        /*  */
 
-exit:
+cleanup2:
+       kfree(eFuseWord);
+
+cleanup1:
        kfree(efuseTbl);
 
-       kfree(eFuseWord);
+exit:
+       ;
 }
 
 static void efuse_read_phymap_from_txpktbuf(
-- 
2.1.3


_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to