[PATCH 7/7] staging: rtl8723bs: simplify cleanup using __free
Sanjay Chitroda
sanjayembeddedse at gmail.com
Tue Mar 10 13:05:13 PDT 2026
From: Sanjay Chitroda <sanjayembeddedse at gmail.com>
Replace manual cleanup logic with __free attribute from cleanup.h. This
removes explicit kfree() calls and simplifies the error handling paths.
No functional change intended for kmalloc().
Signed-off-by: Sanjay Chitroda <sanjayembeddedse at gmail.com>
---
.../staging/rtl8723bs/hal/rtl8723b_hal_init.c | 13 ++-----
drivers/staging/rtl8723bs/hal/sdio_ops.c | 37 ++++---------------
2 files changed, 11 insertions(+), 39 deletions(-)
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723b_hal_init.c b/drivers/staging/rtl8723bs/hal/rtl8723b_hal_init.c
index 8d259820f103..2badf7d1aec4 100644
--- a/drivers/staging/rtl8723bs/hal/rtl8723b_hal_init.c
+++ b/drivers/staging/rtl8723bs/hal/rtl8723b_hal_init.c
@@ -627,7 +627,6 @@ static void hal_ReadEFuse_WiFi(
u8 *pbuf
)
{
- u8 *efuseTbl = NULL;
u16 eFuse_Addr = 0;
u8 offset, wden;
u8 efuseHeader, efuseExtHdr, efuseData;
@@ -640,7 +639,7 @@ static void hal_ReadEFuse_WiFi(
if ((_offset + _size_byte) > EFUSE_MAX_MAP_LEN)
return;
- efuseTbl = kmalloc(EFUSE_MAX_MAP_LEN, GFP_ATOMIC);
+ u8 *efuseTbl __free(kfree) = kmalloc(EFUSE_MAX_MAP_LEN, GFP_ATOMIC);
if (!efuseTbl)
return;
@@ -702,8 +701,6 @@ static void hal_ReadEFuse_WiFi(
rtw_hal_set_hwreg(padapter, HW_VAR_EFUSE_BYTES, (u8 *)&used);
rtw_hal_set_hwreg(padapter, HW_VAR_EFUSE_USAGE, (u8 *)&efuse_usage);
-
- kfree(efuseTbl);
}
static void hal_ReadEFuse_BT(
@@ -713,7 +710,6 @@ static void hal_ReadEFuse_BT(
u8 *pbuf
)
{
- u8 *efuseTbl;
u8 bank;
u16 eFuse_Addr;
u8 efuseHeader, efuseExtHdr, efuseData;
@@ -728,7 +724,7 @@ static void hal_ReadEFuse_BT(
if ((_offset + _size_byte) > EFUSE_BT_MAP_LEN)
return;
- efuseTbl = kmalloc(EFUSE_BT_MAP_LEN, GFP_ATOMIC);
+ u8 *efuseTbl __free(kfree) = kmalloc(EFUSE_BT_MAP_LEN, GFP_ATOMIC);
if (!efuseTbl)
return;
@@ -739,7 +735,7 @@ static void hal_ReadEFuse_BT(
for (bank = 1; bank < 3; bank++) { /* 8723b Max bake 0~2 */
if (hal_EfuseSwitchToBank(padapter, bank) == false)
- goto exit;
+ return;
eFuse_Addr = 0;
@@ -804,9 +800,6 @@ static void hal_ReadEFuse_BT(
rtw_hal_set_hwreg(padapter, HW_VAR_EFUSE_BT_BYTES, (u8 *)&used);
rtw_hal_set_hwreg(padapter, HW_VAR_EFUSE_BT_USAGE, (u8 *)&efuse_usage);
-
-exit:
- kfree(efuseTbl);
}
void Hal_ReadEFuse(
diff --git a/drivers/staging/rtl8723bs/hal/sdio_ops.c b/drivers/staging/rtl8723bs/hal/sdio_ops.c
index c9cb20c61a2b..303139a75551 100644
--- a/drivers/staging/rtl8723bs/hal/sdio_ops.c
+++ b/drivers/staging/rtl8723bs/hal/sdio_ops.c
@@ -179,9 +179,7 @@ static u32 sdio_read32(struct intf_hdl *intfhdl, u32 addr)
if (shift == 0) {
val = sd_read32(intfhdl, ftaddr, NULL);
} else {
- u8 *tmpbuf;
-
- tmpbuf = kmalloc(8, GFP_ATOMIC);
+ u8 *tmpbuf __free(kfree) = kmalloc(8, GFP_ATOMIC);
if (!tmpbuf)
return SDIO_ERR_VAL32;
@@ -189,8 +187,6 @@ static u32 sdio_read32(struct intf_hdl *intfhdl, u32 addr)
sd_read(intfhdl, ftaddr, 8, tmpbuf);
memcpy(&le_tmp, tmpbuf + shift, 4);
val = le32_to_cpu(le_tmp);
-
- kfree(tmpbuf);
}
return val;
}
@@ -223,19 +219,17 @@ static s32 sdio_readN(struct intf_hdl *intfhdl, u32 addr, u32 cnt, u8 *buf)
if (shift == 0) {
err = sd_read(intfhdl, ftaddr, cnt, buf);
} else {
- u8 *tmpbuf;
u32 n;
ftaddr &= ~(u16)0x3;
n = cnt + shift;
- tmpbuf = kmalloc(n, GFP_ATOMIC);
+ u8 *tmpbuf __free(kfree) = kmalloc(n, GFP_ATOMIC);
if (!tmpbuf)
return -ENOMEM;
err = sd_read(intfhdl, ftaddr, n, tmpbuf);
if (!err)
memcpy(buf, tmpbuf + shift, cnt);
- kfree(tmpbuf);
}
return err;
}
@@ -326,22 +320,18 @@ static s32 sdio_writeN(struct intf_hdl *intfhdl, u32 addr, u32 cnt, u8 *buf)
if (shift == 0) {
err = sd_write(intfhdl, ftaddr, cnt, buf);
} else {
- u8 *tmpbuf;
u32 n;
ftaddr &= ~(u16)0x3;
n = cnt + shift;
- tmpbuf = kmalloc(n, GFP_ATOMIC);
+ u8 *tmpbuf __free(kfree) = kmalloc(n, GFP_ATOMIC);
if (!tmpbuf)
return -ENOMEM;
err = sd_read(intfhdl, ftaddr, 4, tmpbuf);
- if (err) {
- kfree(tmpbuf);
+ if (err)
return err;
- }
memcpy(tmpbuf + shift, buf, cnt);
err = sd_write(intfhdl, ftaddr, n, tmpbuf);
- kfree(tmpbuf);
}
return err;
}
@@ -491,7 +481,6 @@ static s32 _sdio_local_read(
struct intf_hdl *intfhdl;
u8 mac_pwr_ctrl_on;
s32 err;
- u8 *tmpbuf;
u32 n;
intfhdl = &adapter->iopriv.intf;
@@ -503,7 +492,7 @@ static s32 _sdio_local_read(
return _sd_cmd52_read(intfhdl, addr, cnt, buf);
n = round_up(cnt, 4);
- tmpbuf = kmalloc(n, GFP_ATOMIC);
+ u8 *tmpbuf __free(kfree) = kmalloc(n, GFP_ATOMIC);
if (!tmpbuf)
return -ENOMEM;
@@ -511,8 +500,6 @@ static s32 _sdio_local_read(
if (!err)
memcpy(buf, tmpbuf, cnt);
- kfree(tmpbuf);
-
return err;
}
@@ -529,7 +516,6 @@ s32 sdio_local_read(
struct intf_hdl *intfhdl;
u8 mac_pwr_ctrl_on;
s32 err;
- u8 *tmpbuf;
u32 n;
intfhdl = &adapter->iopriv.intf;
@@ -544,7 +530,7 @@ s32 sdio_local_read(
return sd_cmd52_read(intfhdl, addr, cnt, buf);
n = round_up(cnt, 4);
- tmpbuf = kmalloc(n, GFP_ATOMIC);
+ u8 *tmpbuf __free(kfree) = kmalloc(n, GFP_ATOMIC);
if (!tmpbuf)
return -ENOMEM;
@@ -552,8 +538,6 @@ s32 sdio_local_read(
if (!err)
memcpy(buf, tmpbuf, cnt);
- kfree(tmpbuf);
-
return err;
}
@@ -570,7 +554,6 @@ s32 sdio_local_write(
struct intf_hdl *intfhdl;
u8 mac_pwr_ctrl_on;
s32 err;
- u8 *tmpbuf;
intfhdl = &adapter->iopriv.intf;
@@ -583,7 +566,7 @@ s32 sdio_local_write(
)
return sd_cmd52_write(intfhdl, addr, cnt, buf);
- tmpbuf = kmalloc(cnt, GFP_ATOMIC);
+ u8 *tmpbuf __free(kfree) = kmalloc(cnt, GFP_ATOMIC);
if (!tmpbuf)
return -ENOMEM;
@@ -591,8 +574,6 @@ s32 sdio_local_write(
err = sd_write(intfhdl, addr, cnt, tmpbuf);
- kfree(tmpbuf);
-
return err;
}
@@ -880,16 +861,14 @@ void sd_int_dpc(struct adapter *adapter)
}
if (hal->sdio_hisr & SDIO_HISR_TXERR) {
- u8 *status;
u32 addr;
- status = kmalloc(4, GFP_ATOMIC);
+ u8 *status __free(kfree) = kmalloc(4, GFP_ATOMIC);
if (status) {
addr = REG_TXDMA_STATUS;
hal_sdio_get_cmd_addr_8723b(adapter, WLAN_IOREG_DEVICE_ID, addr, &addr);
_sd_read(intfhdl, addr, 4, status);
_sd_write(intfhdl, addr, 4, status);
- kfree(status);
}
}
--
2.34.1
More information about the Linux-mediatek
mailing list