* [PATCH v4 0/4] remove memory allocation wrappers
@ 2026-01-31 19:29 Minu Jin
2026-01-31 19:29 ` [PATCH v4 1/4] staging: rtl8723bs: replace rtw_malloc() with kmalloc() Minu Jin
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: Minu Jin @ 2026-01-31 19:29 UTC (permalink / raw)
To: gregkh
Cc: dan.carpenter, trohan2000, andy, linux-staging, straube.linux,
linux-kernel, Minu Jin
Replace redundant wrapper functions with kernel APIs
kmalloc(), kzalloc(), skb_copy() and __dev_alloc_skb().
The original wrappers relied on in_interrupt() check to decide between
GFP_ATOMIC and GFP_KERNEL.
So, I have analyzed call sites to apply the appropriate GFP flag based
on the context.
- GFP_ATOMIC: For data paths, tasklets, timer handlers, spinlock, and
functions called within atomic contexts.
- GFP_KERNEL: For driver initialization (init/probe), configuration
setups, and process contexts where sleeping is allowed.
I would appreciate a review to ensure that these flags were correctly
identified for each context.
About the usage of kmemdup():
while Andy suggested a fallback to kmalloc() when the source is
NULL, I chose to skip allocation in those cases. This is to
maintain consistency with original logic, which only performed
copy when the source data was valid.
Changes in v4
(suggested by Andy Shevchenko)
- Use kmemdup() where applicable.
- Use array_size(), size_add() for overflow safe allocations.
- Use sizeof(*ptr) instead of sizeof(struct val) for
better maintainability.
Changes in v3
- I have analyzed each call site to apply the appropriate GFP flags
based on the execution context.
- Improved the logical separation of patches to maintain git bisect
- Removed redundant definitions and unused macros (e.g., rtw_skb_alloc_f)
in the final cleanup patch.
Minu Jin (4):
staging: rtl8723bs: replace rtw_malloc() with kmalloc()
staging: rtl8723bs: replace rtw_zmalloc() with kzalloc()
staging: rtl8723bs: replace skb allocation, copy wrappers
staging: rtl8723bs: remove unused allocation wrapper functions
drivers/staging/rtl8723bs/core/rtw_ap.c | 20 ++---
drivers/staging/rtl8723bs/core/rtw_cmd.c | 83 +++++++++----------
drivers/staging/rtl8723bs/core/rtw_mlme.c | 12 +--
drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 41 +++++----
drivers/staging/rtl8723bs/core/rtw_recv.c | 4 +-
drivers/staging/rtl8723bs/core/rtw_security.c | 3 +-
.../staging/rtl8723bs/core/rtw_wlan_util.c | 2 +-
drivers/staging/rtl8723bs/core/rtw_xmit.c | 8 +-
.../staging/rtl8723bs/hal/rtl8723b_hal_init.c | 4 +-
.../staging/rtl8723bs/hal/rtl8723bs_recv.c | 8 +-
drivers/staging/rtl8723bs/hal/sdio_ops.c | 18 ++--
.../staging/rtl8723bs/include/osdep_service.h | 11 ---
.../staging/rtl8723bs/os_dep/ioctl_cfg80211.c | 23 ++---
drivers/staging/rtl8723bs/os_dep/os_intfs.c | 2 +-
.../staging/rtl8723bs/os_dep/osdep_service.c | 30 +------
drivers/staging/rtl8723bs/os_dep/xmit_linux.c | 4 +-
16 files changed, 113 insertions(+), 160 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v4 1/4] staging: rtl8723bs: replace rtw_malloc() with kmalloc()
2026-01-31 19:29 [PATCH v4 0/4] remove memory allocation wrappers Minu Jin
@ 2026-01-31 19:29 ` Minu Jin
2026-02-03 14:52 ` Andy Shevchenko
2026-01-31 19:29 ` [PATCH v4 2/4] staging: rtl8723bs: replace rtw_zmalloc() with kzalloc() Minu Jin
` (2 subsequent siblings)
3 siblings, 1 reply; 9+ messages in thread
From: Minu Jin @ 2026-01-31 19:29 UTC (permalink / raw)
To: gregkh
Cc: dan.carpenter, trohan2000, andy, linux-staging, straube.linux,
linux-kernel, Minu Jin, Andy Shevchenko
Remove wrapper function _rtw_malloc() and macro rtw_malloc().
Replace all rtw_malloc with kmalloc.
All call sites are reviewed to select GFP_KERNEL or GFP_ATOMIC.
1. GFP_KERNEL:
Used in paths that are executed in process context and are allowed to sleep.
- Driver initialization and probe paths.
- Workqueue callbacks and cfg80211 configuration callbacks.
2. GFP_ATOMIC:
Used in paths that must not sleep because they operate in atomic contexts.
- Interrupt handlers and SoftIRQ contexts.
- Functions called while holding spinlocks.
- Low-level I/O operations (SDIO) (eg, sdio_read32())
Replace kmalloc()/memcpy() with kmemdup() where possible.
Replace sizeof(struct val) with sizeof(*ptr).
Remove blank line after kmalloc().
Suggested-by: Andy Shevchenko <andriy.shevchenko@intel.com>
Signed-off-by: Minu Jin <s9430939@naver.com>
---
drivers/staging/rtl8723bs/core/rtw_ap.c | 12 ++++--------
drivers/staging/rtl8723bs/core/rtw_cmd.c | 2 +-
drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 2 +-
drivers/staging/rtl8723bs/hal/rtl8723b_hal_init.c | 4 ++--
drivers/staging/rtl8723bs/hal/sdio_ops.c | 14 +++++++-------
drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c | 7 +++----
drivers/staging/rtl8723bs/os_dep/osdep_service.c | 8 +++-----
7 files changed, 21 insertions(+), 28 deletions(-)
diff --git a/drivers/staging/rtl8723bs/core/rtw_ap.c b/drivers/staging/rtl8723bs/core/rtw_ap.c
index 3ff5daf1e5aa..bfe520a7c549 100644
--- a/drivers/staging/rtl8723bs/core/rtw_ap.c
+++ b/drivers/staging/rtl8723bs/core/rtw_ap.c
@@ -114,10 +114,8 @@ static void update_BCNTIM(struct adapter *padapter)
dst_ie = pie + offset;
}
- if (remainder_ielen > 0) {
- pbackup_remainder_ie = rtw_malloc(remainder_ielen);
- if (pbackup_remainder_ie && premainder_ie)
- memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
+ if (remainder_ielen > 0 && premainder_ie) {
+ pbackup_remainder_ie = kmemdup(premainder_ie, remainder_ielen, GFP_ATOMIC);
}
*dst_ie++ = WLAN_EID_TIM;
@@ -1440,10 +1438,8 @@ static void update_bcn_wps_ie(struct adapter *padapter)
remainder_ielen = ielen - wps_offset - wps_ielen;
- if (remainder_ielen > 0) {
- pbackup_remainder_ie = rtw_malloc(remainder_ielen);
- if (pbackup_remainder_ie)
- memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
+ if (remainder_ielen > 0 && premainder_ie) {
+ pbackup_remainder_ie = kmemdup(premainder_ie, remainder_ielen, GFP_ATOMIC);
}
wps_ielen = (uint)pwps_ie_src[1];/* to get ie data len */
diff --git a/drivers/staging/rtl8723bs/core/rtw_cmd.c b/drivers/staging/rtl8723bs/core/rtw_cmd.c
index f80476946622..0cafa5326129 100644
--- a/drivers/staging/rtl8723bs/core/rtw_cmd.c
+++ b/drivers/staging/rtl8723bs/core/rtw_cmd.c
@@ -1695,7 +1695,7 @@ static void c2h_wk_callback(struct work_struct *work)
/* This C2H event is read, clear it */
c2h_evt_clear(adapter);
} else {
- c2h_evt = rtw_malloc(16);
+ c2h_evt = kmalloc(16, GFP_KERNEL);
if (c2h_evt) {
/* This C2H event is not read, read & clear now */
if (c2h_evt_read_88xx(adapter, c2h_evt) != _SUCCESS) {
diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
index fa1e3ad59254..04542219752c 100644
--- a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
+++ b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
@@ -589,7 +589,7 @@ unsigned int OnBeacon(struct adapter *padapter, union recv_frame *precv_frame)
if (!memcmp(GetAddr3Ptr(pframe), get_my_bssid(&pmlmeinfo->network), ETH_ALEN)) {
if (pmlmeinfo->state & WIFI_FW_AUTH_NULL) {
/* we should update current network before auth, or some IE is wrong */
- pbss = rtw_malloc(sizeof(struct wlan_bssid_ex));
+ pbss = kmalloc(sizeof(*pbss), GFP_ATOMIC);
if (pbss) {
if (collect_bss_info(padapter, precv_frame, pbss) == _SUCCESS) {
update_network(&(pmlmepriv->cur_network.network), pbss, padapter, true);
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723b_hal_init.c b/drivers/staging/rtl8723bs/hal/rtl8723b_hal_init.c
index 054e2c2eab02..144094eeec30 100644
--- a/drivers/staging/rtl8723bs/hal/rtl8723b_hal_init.c
+++ b/drivers/staging/rtl8723bs/hal/rtl8723b_hal_init.c
@@ -642,7 +642,7 @@ static void hal_ReadEFuse_WiFi(
if ((_offset + _size_byte) > EFUSE_MAX_MAP_LEN)
return;
- efuseTbl = rtw_malloc(EFUSE_MAX_MAP_LEN);
+ efuseTbl = kmalloc(EFUSE_MAX_MAP_LEN, GFP_ATOMIC);
if (!efuseTbl)
return;
@@ -730,7 +730,7 @@ static void hal_ReadEFuse_BT(
if ((_offset + _size_byte) > EFUSE_BT_MAP_LEN)
return;
- efuseTbl = rtw_malloc(EFUSE_BT_MAP_LEN);
+ efuseTbl = kmalloc(EFUSE_BT_MAP_LEN, GFP_ATOMIC);
if (!efuseTbl)
return;
diff --git a/drivers/staging/rtl8723bs/hal/sdio_ops.c b/drivers/staging/rtl8723bs/hal/sdio_ops.c
index 454f2fabc116..7d211464cb2f 100644
--- a/drivers/staging/rtl8723bs/hal/sdio_ops.c
+++ b/drivers/staging/rtl8723bs/hal/sdio_ops.c
@@ -181,7 +181,7 @@ static u32 sdio_read32(struct intf_hdl *intfhdl, u32 addr)
} else {
u8 *tmpbuf;
- tmpbuf = rtw_malloc(8);
+ tmpbuf = kmalloc(8, GFP_ATOMIC);
if (!tmpbuf)
return SDIO_ERR_VAL32;
@@ -228,7 +228,7 @@ static s32 sdio_readN(struct intf_hdl *intfhdl, u32 addr, u32 cnt, u8 *buf)
ftaddr &= ~(u16)0x3;
n = cnt + shift;
- tmpbuf = rtw_malloc(n);
+ tmpbuf = kmalloc(n, GFP_ATOMIC);
if (!tmpbuf)
return -1;
@@ -331,7 +331,7 @@ static s32 sdio_writeN(struct intf_hdl *intfhdl, u32 addr, u32 cnt, u8 *buf)
ftaddr &= ~(u16)0x3;
n = cnt + shift;
- tmpbuf = rtw_malloc(n);
+ tmpbuf = kmalloc(n, GFP_ATOMIC);
if (!tmpbuf)
return -1;
err = sd_read(intfhdl, ftaddr, 4, tmpbuf);
@@ -503,7 +503,7 @@ static s32 _sdio_local_read(
return _sd_cmd52_read(intfhdl, addr, cnt, buf);
n = round_up(cnt, 4);
- tmpbuf = rtw_malloc(n);
+ tmpbuf = kmalloc(n, GFP_ATOMIC);
if (!tmpbuf)
return -1;
@@ -544,7 +544,7 @@ s32 sdio_local_read(
return sd_cmd52_read(intfhdl, addr, cnt, buf);
n = round_up(cnt, 4);
- tmpbuf = rtw_malloc(n);
+ tmpbuf = kmalloc(n, GFP_ATOMIC);
if (!tmpbuf)
return -1;
@@ -583,7 +583,7 @@ s32 sdio_local_write(
)
return sd_cmd52_write(intfhdl, addr, cnt, buf);
- tmpbuf = rtw_malloc(cnt);
+ tmpbuf = kmalloc(cnt, GFP_ATOMIC);
if (!tmpbuf)
return -1;
@@ -883,7 +883,7 @@ void sd_int_dpc(struct adapter *adapter)
u8 *status;
u32 addr;
- status = rtw_malloc(4);
+ status = kmalloc(4, GFP_ATOMIC);
if (status) {
addr = REG_TXDMA_STATUS;
hal_sdio_get_cmd_addr_8723b(adapter, WLAN_IOREG_DEVICE_ID, addr, &addr);
diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
index 476ab055e53e..b4bc6c345fbe 100644
--- a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
+++ b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
@@ -841,7 +841,7 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
param_len = sizeof(struct ieee_param) + params->key_len;
- param = rtw_malloc(param_len);
+ param = kmalloc(param_len, GFP_KERNEL);
if (!param)
return -1;
@@ -1163,11 +1163,10 @@ static int rtw_cfg80211_set_probe_req_wpsp2pie(struct adapter *padapter, char *b
pmlmepriv->wps_probe_req_ie = NULL;
}
- pmlmepriv->wps_probe_req_ie = rtw_malloc(wps_ielen);
+ pmlmepriv->wps_probe_req_ie = kmemdup(wps_ie, wps_ielen, GFP_KERNEL);
if (!pmlmepriv->wps_probe_req_ie)
return -EINVAL;
- memcpy(pmlmepriv->wps_probe_req_ie, wps_ie, wps_ielen);
pmlmepriv->wps_probe_req_ie_len = wps_ielen;
}
}
@@ -1715,7 +1714,7 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
wep_key_len = wep_key_len <= 5 ? 5 : 13;
wep_total_len = wep_key_len +
offsetof(struct ndis_802_11_wep, key_material);
- pwep = rtw_malloc(wep_total_len);
+ pwep = kmalloc(wep_total_len, GFP_KERNEL);
if (!pwep) {
ret = -ENOMEM;
goto exit;
diff --git a/drivers/staging/rtl8723bs/os_dep/osdep_service.c b/drivers/staging/rtl8723bs/os_dep/osdep_service.c
index 01ca423faf87..770d7c1b41b0 100644
--- a/drivers/staging/rtl8723bs/os_dep/osdep_service.c
+++ b/drivers/staging/rtl8723bs/os_dep/osdep_service.c
@@ -21,8 +21,7 @@ void *_rtw_malloc(u32 sz)
void *_rtw_zmalloc(u32 sz)
{
- void *pbuf = _rtw_malloc(sz);
-
+ void *pbuf = kmalloc(sz, in_interrupt() ? GFP_ATOMIC : GFP_KERNEL);
if (pbuf)
memset(pbuf, 0, sz);
@@ -129,7 +128,7 @@ void rtw_buf_update(u8 **buf, u32 *buf_len, u8 *src, u32 src_len)
goto keep_ori;
/* duplicate src */
- dup = rtw_malloc(src_len);
+ dup = kmalloc(src_len, GFP_ATOMIC);
if (dup) {
dup_len = src_len;
memcpy(dup, src, dup_len);
@@ -220,8 +219,7 @@ struct rtw_cbuf *rtw_cbuf_alloc(u32 size)
{
struct rtw_cbuf *cbuf;
- cbuf = rtw_malloc(struct_size(cbuf, bufs, size));
-
+ cbuf = kmalloc(struct_size(cbuf, bufs, size), GFP_ATOMIC);
if (cbuf) {
cbuf->write = 0;
cbuf->read = 0;
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v4 2/4] staging: rtl8723bs: replace rtw_zmalloc() with kzalloc()
2026-01-31 19:29 [PATCH v4 0/4] remove memory allocation wrappers Minu Jin
2026-01-31 19:29 ` [PATCH v4 1/4] staging: rtl8723bs: replace rtw_malloc() with kmalloc() Minu Jin
@ 2026-01-31 19:29 ` Minu Jin
2026-02-03 15:11 ` Andy Shevchenko
2026-01-31 19:30 ` [PATCH v4 3/4] staging: rtl8723bs: replace skb allocation, copy wrappers Minu Jin
2026-01-31 19:30 ` [PATCH v4 4/4] staging: rtl8723bs: remove unused allocation wrapper functions Minu Jin
3 siblings, 1 reply; 9+ messages in thread
From: Minu Jin @ 2026-01-31 19:29 UTC (permalink / raw)
To: gregkh
Cc: dan.carpenter, trohan2000, andy, linux-staging, straube.linux,
linux-kernel, Minu Jin, Andy Shevchenko
replaces the wrapper function rtw_zmalloc() with kzalloc().
I reviewed all the call sites to determine the appropriate GFP flags:
- GFP_KERNEL: Used for initialization and configuration paths.
init/probe, config/setup
- GFP_ATOMIC: Used for critical real-time paths.
including interrupts, timer handler, region where spinlocks are held
Replace sizeof(struct val) with sizeof(*ptr).
Use kmemdup() where possible.
Remove blank line after kzalloc().
Use array_size() and size_add().
Suggested-by: Andy Shevchenko <andriy.shevchenko@intel.com>
Signed-off-by: Minu Jin <s9430939@naver.com>
---
drivers/staging/rtl8723bs/core/rtw_ap.c | 8 +-
drivers/staging/rtl8723bs/core/rtw_cmd.c | 81 +++++++++----------
drivers/staging/rtl8723bs/core/rtw_mlme.c | 12 +--
drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 39 +++++----
drivers/staging/rtl8723bs/core/rtw_recv.c | 2 +-
drivers/staging/rtl8723bs/core/rtw_security.c | 3 +-
.../staging/rtl8723bs/core/rtw_wlan_util.c | 2 +-
drivers/staging/rtl8723bs/core/rtw_xmit.c | 8 +-
.../staging/rtl8723bs/hal/rtl8723bs_recv.c | 4 +-
drivers/staging/rtl8723bs/hal/sdio_ops.c | 2 +-
.../staging/rtl8723bs/os_dep/ioctl_cfg80211.c | 16 ++--
drivers/staging/rtl8723bs/os_dep/os_intfs.c | 2 +-
drivers/staging/rtl8723bs/os_dep/xmit_linux.c | 2 +-
13 files changed, 88 insertions(+), 93 deletions(-)
diff --git a/drivers/staging/rtl8723bs/core/rtw_ap.c b/drivers/staging/rtl8723bs/core/rtw_ap.c
index bfe520a7c549..6f465dffb105 100644
--- a/drivers/staging/rtl8723bs/core/rtw_ap.c
+++ b/drivers/staging/rtl8723bs/core/rtw_ap.c
@@ -1228,13 +1228,13 @@ u8 rtw_ap_set_pairwise_key(struct adapter *padapter, struct sta_info *psta)
struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
u8 res = _SUCCESS;
- ph2c = rtw_zmalloc(sizeof(struct cmd_obj));
+ ph2c = kzalloc(sizeof(*ph2c), GFP_KERNEL);
if (!ph2c) {
res = _FAIL;
goto exit;
}
- psetstakey_para = rtw_zmalloc(sizeof(struct set_stakey_parm));
+ psetstakey_para = kzalloc(sizeof(*psetstakey_para), GFP_KERNEL);
if (!psetstakey_para) {
kfree(ph2c);
res = _FAIL;
@@ -1268,12 +1268,12 @@ static int rtw_ap_set_key(struct adapter *padapter,
struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
int res = _SUCCESS;
- pcmd = rtw_zmalloc(sizeof(struct cmd_obj));
+ pcmd = kzalloc(sizeof(*pcmd), GFP_KERNEL);
if (!pcmd) {
res = _FAIL;
goto exit;
}
- psetkeyparm = rtw_zmalloc(sizeof(struct setkey_parm));
+ psetkeyparm = kzalloc(sizeof(*psetkeyparm), GFP_KERNEL);
if (!psetkeyparm) {
kfree(pcmd);
res = _FAIL;
diff --git a/drivers/staging/rtl8723bs/core/rtw_cmd.c b/drivers/staging/rtl8723bs/core/rtw_cmd.c
index 0cafa5326129..d0315d08a35b 100644
--- a/drivers/staging/rtl8723bs/core/rtw_cmd.c
+++ b/drivers/staging/rtl8723bs/core/rtw_cmd.c
@@ -171,15 +171,13 @@ int rtw_init_cmd_priv(struct cmd_priv *pcmdpriv)
pcmdpriv->cmd_seq = 1;
- pcmdpriv->cmd_allocated_buf = rtw_zmalloc(MAX_CMDSZ + CMDBUFF_ALIGN_SZ);
-
+ pcmdpriv->cmd_allocated_buf = kzalloc(MAX_CMDSZ + CMDBUFF_ALIGN_SZ, GFP_ATOMIC);
if (!pcmdpriv->cmd_allocated_buf)
return -ENOMEM;
pcmdpriv->cmd_buf = PTR_ALIGN(pcmdpriv->cmd_allocated_buf, CMDBUFF_ALIGN_SZ);
- pcmdpriv->rsp_allocated_buf = rtw_zmalloc(MAX_RSPSZ + 4);
-
+ pcmdpriv->rsp_allocated_buf = kzalloc(MAX_RSPSZ + 4, GFP_ATOMIC);
if (!pcmdpriv->rsp_allocated_buf) {
kfree(pcmdpriv->cmd_allocated_buf);
return -ENOMEM;
@@ -535,11 +533,11 @@ u8 rtw_sitesurvey_cmd(struct adapter *padapter, struct ndis_802_11_ssid *ssid,
if (check_fwstate(pmlmepriv, _FW_LINKED))
rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_SCAN, 1);
- ph2c = rtw_zmalloc(sizeof(struct cmd_obj));
+ ph2c = kzalloc(sizeof(*ph2c), GFP_ATOMIC);
if (!ph2c)
return _FAIL;
- psurveyPara = rtw_zmalloc(sizeof(struct sitesurvey_parm));
+ psurveyPara = kzalloc(sizeof(*psurveyPara), GFP_ATOMIC);
if (!psurveyPara) {
kfree(ph2c);
return _FAIL;
@@ -603,7 +601,7 @@ u8 rtw_createbss_cmd(struct adapter *padapter)
struct wlan_bssid_ex *pdev_network = &padapter->registrypriv.dev_network;
u8 res = _SUCCESS;
- pcmd = rtw_zmalloc(sizeof(struct cmd_obj));
+ pcmd = kzalloc(sizeof(*pcmd), GFP_ATOMIC);
if (!pcmd) {
res = _FAIL;
goto exit;
@@ -636,7 +634,7 @@ int rtw_startbss_cmd(struct adapter *padapter, int flags)
start_bss_network(padapter);
} else {
/* need enqueue, prepare cmd_obj and enqueue */
- pcmd = rtw_zmalloc(sizeof(struct cmd_obj));
+ pcmd = kzalloc(sizeof(*pcmd), GFP_KERNEL);
if (!pcmd) {
res = _FAIL;
goto exit;
@@ -688,7 +686,7 @@ u8 rtw_joinbss_cmd(struct adapter *padapter, struct wlan_network *pnetwork)
u32 tmp_len;
u8 *ptmp = NULL;
- pcmd = rtw_zmalloc(sizeof(struct cmd_obj));
+ pcmd = kzalloc(sizeof(*pcmd), GFP_ATOMIC);
if (!pcmd) {
res = _FAIL;
goto exit;
@@ -797,7 +795,7 @@ u8 rtw_disassoc_cmd(struct adapter *padapter, u32 deauth_timeout_ms, bool enqueu
u8 res = _SUCCESS;
/* prepare cmd parameter */
- param = rtw_zmalloc(sizeof(*param));
+ param = kzalloc(sizeof(*param), GFP_KERNEL);
if (!param) {
res = _FAIL;
goto exit;
@@ -806,7 +804,7 @@ u8 rtw_disassoc_cmd(struct adapter *padapter, u32 deauth_timeout_ms, bool enqueu
if (enqueue) {
/* need enqueue, prepare cmd_obj and enqueue */
- cmdobj = rtw_zmalloc(sizeof(*cmdobj));
+ cmdobj = kzalloc(sizeof(*cmdobj), GFP_KERNEL);
if (!cmdobj) {
res = _FAIL;
kfree(param);
@@ -833,8 +831,7 @@ u8 rtw_setopmode_cmd(struct adapter *padapter, enum ndis_802_11_network_infrast
struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
u8 res = _SUCCESS;
- psetop = rtw_zmalloc(sizeof(struct setopmode_parm));
-
+ psetop = kzalloc(sizeof(*psetop), GFP_KERNEL);
if (!psetop) {
res = _FAIL;
goto exit;
@@ -842,7 +839,7 @@ u8 rtw_setopmode_cmd(struct adapter *padapter, enum ndis_802_11_network_infrast
psetop->mode = (u8)networktype;
if (enqueue) {
- ph2c = rtw_zmalloc(sizeof(struct cmd_obj));
+ ph2c = kzalloc(sizeof(*ph2c), GFP_KERNEL);
if (!ph2c) {
kfree(psetop);
res = _FAIL;
@@ -869,7 +866,7 @@ u8 rtw_setstakey_cmd(struct adapter *padapter, struct sta_info *sta, u8 unicast_
struct security_priv *psecuritypriv = &padapter->securitypriv;
u8 res = _SUCCESS;
- psetstakey_para = rtw_zmalloc(sizeof(struct set_stakey_parm));
+ psetstakey_para = kzalloc(sizeof(*psetstakey_para), GFP_KERNEL);
if (!psetstakey_para) {
res = _FAIL;
goto exit;
@@ -891,14 +888,14 @@ u8 rtw_setstakey_cmd(struct adapter *padapter, struct sta_info *sta, u8 unicast_
padapter->securitypriv.busetkipkey = true;
if (enqueue) {
- ph2c = rtw_zmalloc(sizeof(struct cmd_obj));
+ ph2c = kzalloc(sizeof(*ph2c), GFP_KERNEL);
if (!ph2c) {
kfree(psetstakey_para);
res = _FAIL;
goto exit;
}
- psetstakey_rsp = rtw_zmalloc(sizeof(struct set_stakey_rsp));
+ psetstakey_rsp = kzalloc(sizeof(*psetstakey_rsp), GFP_KERNEL);
if (!psetstakey_rsp) {
kfree(ph2c);
kfree(psetstakey_para);
@@ -936,20 +933,20 @@ u8 rtw_clearstakey_cmd(struct adapter *padapter, struct sta_info *sta, u8 enqueu
rtw_camid_free(padapter, cam_id);
}
} else {
- ph2c = rtw_zmalloc(sizeof(struct cmd_obj));
+ ph2c = kzalloc(sizeof(*ph2c), GFP_KERNEL);
if (!ph2c) {
res = _FAIL;
goto exit;
}
- psetstakey_para = rtw_zmalloc(sizeof(struct set_stakey_parm));
+ psetstakey_para = kzalloc(sizeof(*psetstakey_para), GFP_KERNEL);
if (!psetstakey_para) {
kfree(ph2c);
res = _FAIL;
goto exit;
}
- psetstakey_rsp = rtw_zmalloc(sizeof(struct set_stakey_rsp));
+ psetstakey_rsp = kzalloc(sizeof(*psetstakey_rsp), GFP_KERNEL);
if (!psetstakey_rsp) {
kfree(ph2c);
kfree(psetstakey_para);
@@ -979,13 +976,13 @@ u8 rtw_addbareq_cmd(struct adapter *padapter, u8 tid, u8 *addr)
u8 res = _SUCCESS;
- ph2c = rtw_zmalloc(sizeof(struct cmd_obj));
+ ph2c = kzalloc(sizeof(*ph2c), GFP_ATOMIC);
if (!ph2c) {
res = _FAIL;
goto exit;
}
- paddbareq_parm = rtw_zmalloc(sizeof(struct addBaReq_parm));
+ paddbareq_parm = kzalloc(sizeof(*paddbareq_parm), GFP_ATOMIC);
if (!paddbareq_parm) {
kfree(ph2c);
res = _FAIL;
@@ -1012,13 +1009,13 @@ u8 rtw_reset_securitypriv_cmd(struct adapter *padapter)
struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
u8 res = _SUCCESS;
- ph2c = rtw_zmalloc(sizeof(struct cmd_obj));
+ ph2c = kzalloc(sizeof(*ph2c), GFP_ATOMIC);
if (!ph2c) {
res = _FAIL;
goto exit;
}
- pdrvextra_cmd_parm = rtw_zmalloc(sizeof(struct drvextra_cmd_parm));
+ pdrvextra_cmd_parm = kzalloc(sizeof(*pdrvextra_cmd_parm), GFP_ATOMIC);
if (!pdrvextra_cmd_parm) {
kfree(ph2c);
res = _FAIL;
@@ -1045,13 +1042,13 @@ u8 rtw_free_assoc_resources_cmd(struct adapter *padapter)
struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
u8 res = _SUCCESS;
- ph2c = rtw_zmalloc(sizeof(struct cmd_obj));
+ ph2c = kzalloc(sizeof(*ph2c), GFP_ATOMIC);
if (!ph2c) {
res = _FAIL;
goto exit;
}
- pdrvextra_cmd_parm = rtw_zmalloc(sizeof(struct drvextra_cmd_parm));
+ pdrvextra_cmd_parm = kzalloc(sizeof(*pdrvextra_cmd_parm), GFP_ATOMIC);
if (!pdrvextra_cmd_parm) {
kfree(ph2c);
res = _FAIL;
@@ -1079,13 +1076,13 @@ u8 rtw_dynamic_chk_wk_cmd(struct adapter *padapter)
u8 res = _SUCCESS;
/* only primary padapter does this cmd */
- ph2c = rtw_zmalloc(sizeof(struct cmd_obj));
+ ph2c = kzalloc(sizeof(*ph2c), GFP_ATOMIC);
if (!ph2c) {
res = _FAIL;
goto exit;
}
- pdrvextra_cmd_parm = rtw_zmalloc(sizeof(struct drvextra_cmd_parm));
+ pdrvextra_cmd_parm = kzalloc(sizeof(*pdrvextra_cmd_parm), GFP_ATOMIC);
if (!pdrvextra_cmd_parm) {
kfree(ph2c);
res = _FAIL;
@@ -1319,13 +1316,13 @@ u8 rtw_lps_ctrl_wk_cmd(struct adapter *padapter, u8 lps_ctrl_type, u8 enqueue)
u8 res = _SUCCESS;
if (enqueue) {
- ph2c = rtw_zmalloc(sizeof(struct cmd_obj));
+ ph2c = kzalloc(sizeof(*ph2c), GFP_ATOMIC);
if (!ph2c) {
res = _FAIL;
goto exit;
}
- pdrvextra_cmd_parm = rtw_zmalloc(sizeof(struct drvextra_cmd_parm));
+ pdrvextra_cmd_parm = kzalloc(sizeof(*pdrvextra_cmd_parm), GFP_ATOMIC);
if (!pdrvextra_cmd_parm) {
kfree(ph2c);
res = _FAIL;
@@ -1360,13 +1357,13 @@ u8 rtw_dm_in_lps_wk_cmd(struct adapter *padapter)
struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
u8 res = _SUCCESS;
- ph2c = rtw_zmalloc(sizeof(struct cmd_obj));
+ ph2c = kzalloc(sizeof(*ph2c), GFP_ATOMIC);
if (!ph2c) {
res = _FAIL;
goto exit;
}
- pdrvextra_cmd_parm = rtw_zmalloc(sizeof(struct drvextra_cmd_parm));
+ pdrvextra_cmd_parm = kzalloc(sizeof(*pdrvextra_cmd_parm), GFP_ATOMIC);
if (!pdrvextra_cmd_parm) {
kfree(ph2c);
res = _FAIL;
@@ -1422,13 +1419,13 @@ u8 rtw_dm_ra_mask_wk_cmd(struct adapter *padapter, u8 *psta)
struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
u8 res = _SUCCESS;
- ph2c = rtw_zmalloc(sizeof(struct cmd_obj));
+ ph2c = kzalloc(sizeof(*ph2c), GFP_ATOMIC);
if (!ph2c) {
res = _FAIL;
goto exit;
}
- pdrvextra_cmd_parm = rtw_zmalloc(sizeof(struct drvextra_cmd_parm));
+ pdrvextra_cmd_parm = kzalloc(sizeof(*pdrvextra_cmd_parm), GFP_ATOMIC);
if (!pdrvextra_cmd_parm) {
kfree(ph2c);
res = _FAIL;
@@ -1456,13 +1453,13 @@ u8 rtw_ps_cmd(struct adapter *padapter)
struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
u8 res = _SUCCESS;
- ppscmd = rtw_zmalloc(sizeof(struct cmd_obj));
+ ppscmd = kzalloc(sizeof(*ppscmd), GFP_ATOMIC);
if (!ppscmd) {
res = _FAIL;
goto exit;
}
- pdrvextra_cmd_parm = rtw_zmalloc(sizeof(struct drvextra_cmd_parm));
+ pdrvextra_cmd_parm = kzalloc(sizeof(*pdrvextra_cmd_parm), GFP_ATOMIC);
if (!pdrvextra_cmd_parm) {
kfree(ppscmd);
res = _FAIL;
@@ -1526,13 +1523,13 @@ u8 rtw_chk_hi_queue_cmd(struct adapter *padapter)
struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
u8 res = _SUCCESS;
- ph2c = rtw_zmalloc(sizeof(struct cmd_obj));
+ ph2c = kzalloc(sizeof(*ph2c), GFP_ATOMIC);
if (!ph2c) {
res = _FAIL;
goto exit;
}
- pdrvextra_cmd_parm = rtw_zmalloc(sizeof(struct drvextra_cmd_parm));
+ pdrvextra_cmd_parm = kzalloc(sizeof(*pdrvextra_cmd_parm), GFP_ATOMIC);
if (!pdrvextra_cmd_parm) {
kfree(ph2c);
res = _FAIL;
@@ -1618,13 +1615,13 @@ u8 rtw_c2h_packet_wk_cmd(struct adapter *padapter, u8 *pbuf, u16 length)
struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
u8 res = _SUCCESS;
- ph2c = rtw_zmalloc(sizeof(struct cmd_obj));
+ ph2c = kzalloc(sizeof(*ph2c), GFP_ATOMIC);
if (!ph2c) {
res = _FAIL;
goto exit;
}
- pdrvextra_cmd_parm = rtw_zmalloc(sizeof(struct drvextra_cmd_parm));
+ pdrvextra_cmd_parm = kzalloc(sizeof(*pdrvextra_cmd_parm), GFP_ATOMIC);
if (!pdrvextra_cmd_parm) {
kfree(ph2c);
res = _FAIL;
@@ -1653,13 +1650,13 @@ u8 rtw_c2h_wk_cmd(struct adapter *padapter, u8 *c2h_evt)
struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
u8 res = _SUCCESS;
- ph2c = rtw_zmalloc(sizeof(struct cmd_obj));
+ ph2c = kzalloc(sizeof(*ph2c), GFP_KERNEL);
if (!ph2c) {
res = _FAIL;
goto exit;
}
- pdrvextra_cmd_parm = rtw_zmalloc(sizeof(struct drvextra_cmd_parm));
+ pdrvextra_cmd_parm = kzalloc(sizeof(*pdrvextra_cmd_parm), GFP_KERNEL);
if (!pdrvextra_cmd_parm) {
kfree(ph2c);
res = _FAIL;
diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme.c b/drivers/staging/rtl8723bs/core/rtw_mlme.c
index f81a29cd6a78..ab6ed5ad1a22 100644
--- a/drivers/staging/rtl8723bs/core/rtw_mlme.c
+++ b/drivers/staging/rtl8723bs/core/rtw_mlme.c
@@ -1337,7 +1337,7 @@ void rtw_stassoc_event_callback(struct adapter *adapter, u8 *pbuf)
/* report to upper layer */
spin_lock_bh(&psta->lock);
if (psta->passoc_req && psta->assoc_req_len > 0) {
- passoc_req = rtw_zmalloc(psta->assoc_req_len);
+ passoc_req = kzalloc(psta->assoc_req_len, GFP_ATOMIC);
if (passoc_req) {
assoc_req_len = psta->assoc_req_len;
memcpy(passoc_req, psta->passoc_req, assoc_req_len);
@@ -1887,13 +1887,13 @@ signed int rtw_set_auth(struct adapter *adapter, struct security_priv *psecurity
struct cmd_priv *pcmdpriv = &adapter->cmdpriv;
signed int res = _SUCCESS;
- pcmd = rtw_zmalloc(sizeof(struct cmd_obj));
+ pcmd = kzalloc(sizeof(*pcmd), GFP_KERNEL);
if (!pcmd) {
res = _FAIL; /* try again */
goto exit;
}
- psetauthparm = rtw_zmalloc(sizeof(struct setauth_parm));
+ psetauthparm = kzalloc(sizeof(*psetauthparm), GFP_KERNEL);
if (!psetauthparm) {
kfree(pcmd);
res = _FAIL;
@@ -1924,7 +1924,7 @@ signed int rtw_set_key(struct adapter *adapter, struct security_priv *psecurityp
struct cmd_priv *pcmdpriv = &adapter->cmdpriv;
signed int res = _SUCCESS;
- psetkeyparm = rtw_zmalloc(sizeof(struct setkey_parm));
+ psetkeyparm = kzalloc(sizeof(*psetkeyparm), GFP_KERNEL);
if (!psetkeyparm) {
res = _FAIL;
goto exit;
@@ -1966,7 +1966,7 @@ signed int rtw_set_key(struct adapter *adapter, struct security_priv *psecurityp
}
if (enqueue) {
- pcmd = rtw_zmalloc(sizeof(struct cmd_obj));
+ pcmd = kzalloc(sizeof(*pcmd), GFP_KERNEL);
if (!pcmd) {
kfree(psetkeyparm);
res = _FAIL; /* try again */
@@ -2073,7 +2073,7 @@ static void rtw_report_sec_ie(struct adapter *adapter, u8 authmode, u8 *sec_ie)
buff = NULL;
if (authmode == WLAN_EID_VENDOR_SPECIFIC) {
- buff = rtw_zmalloc(IW_CUSTOM_MAX);
+ buff = kzalloc(IW_CUSTOM_MAX, GFP_ATOMIC);
if (!buff)
return;
diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
index 04542219752c..ec2acb7999bf 100644
--- a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
+++ b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
@@ -1334,9 +1334,8 @@ unsigned int OnAssocReq(struct adapter *padapter, union recv_frame *precv_frame)
spin_lock_bh(&pstat->lock);
kfree(pstat->passoc_req);
pstat->assoc_req_len = 0;
- pstat->passoc_req = rtw_zmalloc(pkt_len);
+ pstat->passoc_req = kmemdup(pframe, pkt_len, GFP_ATOMIC);
if (pstat->passoc_req) {
- memcpy(pstat->passoc_req, pframe, pkt_len);
pstat->assoc_req_len = pkt_len;
}
spin_unlock_bh(&pstat->lock);
@@ -2348,7 +2347,7 @@ void issue_probersp(struct adapter *padapter, unsigned char *da, u8 is_valid_p2p
u8 *buf;
u8 *ies = pmgntframe->buf_addr+TXDESC_OFFSET+sizeof(struct ieee80211_hdr_3addr);
- buf = rtw_zmalloc(MAX_IE_SZ);
+ buf = kzalloc(MAX_IE_SZ, GFP_ATOMIC);
if (!buf)
return;
@@ -4395,12 +4394,12 @@ void report_survey_event(struct adapter *padapter, union recv_frame *precv_frame
pmlmeext = &padapter->mlmeextpriv;
pcmdpriv = &padapter->cmdpriv;
- pcmd_obj = rtw_zmalloc(sizeof(struct cmd_obj));
+ pcmd_obj = kzalloc(sizeof(*pcmd_obj), GFP_ATOMIC);
if (!pcmd_obj)
return;
cmdsz = (sizeof(struct survey_event) + sizeof(struct C2HEvent_Header));
- pevtcmd = rtw_zmalloc(cmdsz);
+ pevtcmd = kzalloc(cmdsz, GFP_ATOMIC);
if (!pevtcmd) {
kfree(pcmd_obj);
return;
@@ -4448,12 +4447,12 @@ void report_surveydone_event(struct adapter *padapter)
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
- pcmd_obj = rtw_zmalloc(sizeof(struct cmd_obj));
+ pcmd_obj = kzalloc(sizeof(*pcmd_obj), GFP_ATOMIC);
if (!pcmd_obj)
return;
cmdsz = (sizeof(struct surveydone_event) + sizeof(struct C2HEvent_Header));
- pevtcmd = rtw_zmalloc(cmdsz);
+ pevtcmd = kzalloc(cmdsz, GFP_ATOMIC);
if (!pevtcmd) {
kfree(pcmd_obj);
return;
@@ -4493,12 +4492,12 @@ void report_join_res(struct adapter *padapter, int res)
struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
- pcmd_obj = rtw_zmalloc(sizeof(struct cmd_obj));
+ pcmd_obj = kzalloc(sizeof(*pcmd_obj), GFP_ATOMIC);
if (!pcmd_obj)
return;
cmdsz = (sizeof(struct joinbss_event) + sizeof(struct C2HEvent_Header));
- pevtcmd = rtw_zmalloc(cmdsz);
+ pevtcmd = kzalloc(cmdsz, GFP_ATOMIC);
if (!pevtcmd) {
kfree(pcmd_obj);
return;
@@ -4542,12 +4541,12 @@ void report_wmm_edca_update(struct adapter *padapter)
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
- pcmd_obj = rtw_zmalloc(sizeof(struct cmd_obj));
+ pcmd_obj = kzalloc(sizeof(*pcmd_obj), GFP_ATOMIC);
if (!pcmd_obj)
return;
cmdsz = (sizeof(struct wmm_event) + sizeof(struct C2HEvent_Header));
- pevtcmd = rtw_zmalloc(cmdsz);
+ pevtcmd = kzalloc(cmdsz, GFP_ATOMIC);
if (!pevtcmd) {
kfree(pcmd_obj);
return;
@@ -4588,12 +4587,12 @@ void report_del_sta_event(struct adapter *padapter, unsigned char *MacAddr, unsi
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
- pcmd_obj = rtw_zmalloc(sizeof(struct cmd_obj));
+ pcmd_obj = kzalloc(sizeof(*pcmd_obj), GFP_ATOMIC);
if (!pcmd_obj)
return;
cmdsz = (sizeof(struct stadel_event) + sizeof(struct C2HEvent_Header));
- pevtcmd = rtw_zmalloc(cmdsz);
+ pevtcmd = kzalloc(cmdsz, GFP_ATOMIC);
if (!pevtcmd) {
kfree(pcmd_obj);
return;
@@ -4639,12 +4638,12 @@ void report_add_sta_event(struct adapter *padapter, unsigned char *MacAddr, int
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
- pcmd_obj = rtw_zmalloc(sizeof(struct cmd_obj));
+ pcmd_obj = kzalloc(sizeof(*pcmd_obj), GFP_ATOMIC);
if (!pcmd_obj)
return;
cmdsz = (sizeof(struct stassoc_event) + sizeof(struct C2HEvent_Header));
- pevtcmd = rtw_zmalloc(cmdsz);
+ pevtcmd = kzalloc(cmdsz, GFP_ATOMIC);
if (!pevtcmd) {
kfree(pcmd_obj);
return;
@@ -5085,11 +5084,11 @@ void survey_timer_hdl(struct timer_list *t)
pmlmeext->scan_abort = false;/* reset */
}
- ph2c = rtw_zmalloc(sizeof(struct cmd_obj));
+ ph2c = kzalloc(sizeof(*ph2c), GFP_ATOMIC);
if (!ph2c)
return;
- psurveyPara = rtw_zmalloc(sizeof(struct sitesurvey_parm));
+ psurveyPara = kzalloc(sizeof(*psurveyPara), GFP_ATOMIC);
if (!psurveyPara) {
kfree(ph2c);
return;
@@ -5699,7 +5698,7 @@ u8 chk_bmc_sleepq_cmd(struct adapter *padapter)
struct cmd_priv *pcmdpriv = &(padapter->cmdpriv);
u8 res = _SUCCESS;
- ph2c = rtw_zmalloc(sizeof(struct cmd_obj));
+ ph2c = kzalloc(sizeof(*ph2c), GFP_ATOMIC);
if (!ph2c) {
res = _FAIL;
goto exit;
@@ -5723,13 +5722,13 @@ u8 set_tx_beacon_cmd(struct adapter *padapter)
u8 res = _SUCCESS;
int len_diff = 0;
- ph2c = rtw_zmalloc(sizeof(struct cmd_obj));
+ ph2c = kzalloc(sizeof(*ph2c), GFP_ATOMIC);
if (!ph2c) {
res = _FAIL;
goto exit;
}
- ptxBeacon_parm = rtw_zmalloc(sizeof(struct Tx_Beacon_param));
+ ptxBeacon_parm = kzalloc(sizeof(*ptxBeacon_parm), GFP_ATOMIC);
if (!ptxBeacon_parm) {
kfree(ph2c);
res = _FAIL;
diff --git a/drivers/staging/rtl8723bs/core/rtw_recv.c b/drivers/staging/rtl8723bs/core/rtw_recv.c
index 24cc4a9e0445..36798e23a650 100644
--- a/drivers/staging/rtl8723bs/core/rtw_recv.c
+++ b/drivers/staging/rtl8723bs/core/rtw_recv.c
@@ -1425,7 +1425,7 @@ static signed int validate_80211w_mgmt(struct adapter *adapter, union recv_frame
memcpy(pattrib->ta, GetAddr2Ptr(ptr), ETH_ALEN);
/* actual management data frame body */
data_len = pattrib->pkt_len - pattrib->hdrlen - pattrib->iv_len - pattrib->icv_len;
- mgmt_DATA = rtw_zmalloc(data_len);
+ mgmt_DATA = kzalloc(data_len, GFP_ATOMIC);
if (!mgmt_DATA)
goto validate_80211w_fail;
precv_frame = decryptor(adapter, precv_frame);
diff --git a/drivers/staging/rtl8723bs/core/rtw_security.c b/drivers/staging/rtl8723bs/core/rtw_security.c
index 86e54454145a..bd179daab35e 100644
--- a/drivers/staging/rtl8723bs/core/rtw_security.c
+++ b/drivers/staging/rtl8723bs/core/rtw_security.c
@@ -1316,8 +1316,7 @@ u32 rtw_BIP_verify(struct adapter *padapter, u8 *precvframe)
__le64 le_tmp64;
ori_len = pattrib->pkt_len - WLAN_HDR_A3_LEN + BIP_AAD_SIZE;
- BIP_AAD = rtw_zmalloc(ori_len);
-
+ BIP_AAD = kzalloc(ori_len, GFP_KERNEL);
if (!BIP_AAD)
return _FAIL;
diff --git a/drivers/staging/rtl8723bs/core/rtw_wlan_util.c b/drivers/staging/rtl8723bs/core/rtw_wlan_util.c
index 9ab9fb25ced4..d7b0bf237e21 100644
--- a/drivers/staging/rtl8723bs/core/rtw_wlan_util.c
+++ b/drivers/staging/rtl8723bs/core/rtw_wlan_util.c
@@ -1132,7 +1132,7 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len)
if (memcmp(cur_network->network.mac_address, pbssid, 6))
return true;
- bssid = rtw_zmalloc(sizeof(struct wlan_bssid_ex));
+ bssid = kzalloc(sizeof(*bssid), GFP_KERNEL);
if (!bssid)
return true;
diff --git a/drivers/staging/rtl8723bs/core/rtw_xmit.c b/drivers/staging/rtl8723bs/core/rtw_xmit.c
index 9cead1455bfa..b2237576b58a 100644
--- a/drivers/staging/rtl8723bs/core/rtw_xmit.c
+++ b/drivers/staging/rtl8723bs/core/rtw_xmit.c
@@ -1170,7 +1170,7 @@ s32 rtw_mgmt_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, s
pwlanhdr = (struct ieee80211_hdr *)pframe;
ori_len = BIP_AAD_SIZE + pattrib->pktlen;
- tmp_buf = BIP_AAD = rtw_zmalloc(ori_len);
+ tmp_buf = BIP_AAD = kzalloc(ori_len, GFP_ATOMIC);
subtype = GetFrameSubType(pframe); /* bit(7)~bit(2) */
if (!BIP_AAD)
@@ -1674,8 +1674,7 @@ struct xmit_frame *rtw_alloc_xmitframe_once(struct xmit_priv *pxmitpriv)
struct xmit_frame *pxframe = NULL;
u8 *alloc_addr;
- alloc_addr = rtw_zmalloc(sizeof(struct xmit_frame) + 4);
-
+ alloc_addr = kzalloc(sizeof(*pxframe) + 4, GFP_ATOMIC);
if (!alloc_addr)
goto exit;
@@ -1846,8 +1845,7 @@ s32 rtw_alloc_hwxmits(struct adapter *padapter)
pxmitpriv->hwxmits = NULL;
- pxmitpriv->hwxmits = rtw_zmalloc(sizeof(struct hw_xmit) * pxmitpriv->hwxmit_entry);
-
+ pxmitpriv->hwxmits = kcalloc(pxmitpriv->hwxmit_entry, sizeof(*hwxmits), GFP_ATOMIC);
if (!pxmitpriv->hwxmits)
return _FAIL;
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c b/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
index 399edfbf8ec6..e739f55ba34d 100644
--- a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
+++ b/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
@@ -159,7 +159,7 @@ static void rtl8723bs_c2h_packet_handler(struct adapter *padapter,
if (length == 0)
return;
- tmp = rtw_zmalloc(length);
+ tmp = kzalloc(length, GFP_ATOMIC);
if (!tmp)
return;
@@ -382,7 +382,7 @@ s32 rtl8723bs_init_recv_priv(struct adapter *padapter)
spin_lock_init(&precvpriv->recv_buf_pending_queue.lock);
n = NR_RECVBUFF * sizeof(struct recv_buf) + 4;
- precvpriv->pallocated_recv_buf = rtw_zmalloc(n);
+ precvpriv->pallocated_recv_buf = kzalloc(n, GFP_KERNEL);
if (!precvpriv->pallocated_recv_buf) {
res = _FAIL;
goto exit;
diff --git a/drivers/staging/rtl8723bs/hal/sdio_ops.c b/drivers/staging/rtl8723bs/hal/sdio_ops.c
index 7d211464cb2f..ad1f01ffbc87 100644
--- a/drivers/staging/rtl8723bs/hal/sdio_ops.c
+++ b/drivers/staging/rtl8723bs/hal/sdio_ops.c
@@ -896,7 +896,7 @@ void sd_int_dpc(struct adapter *adapter)
if (hal->sdio_hisr & SDIO_HISR_C2HCMD) {
struct c2h_evt_hdr_88xx *c2h_evt;
- c2h_evt = rtw_zmalloc(16);
+ c2h_evt = kzalloc(16, GFP_ATOMIC);
if (c2h_evt) {
if (c2h_evt_read_88xx(adapter, (u8 *)c2h_evt) == _SUCCESS) {
if (c2h_id_filter_ccx_8723b((u8 *)c2h_evt)) {
diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
index b4bc6c345fbe..779ac82a6de7 100644
--- a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
+++ b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
@@ -111,6 +111,7 @@ static struct ieee80211_supported_band *rtw_spt_band_alloc(
{
struct ieee80211_supported_band *spt_band = NULL;
int n_channels, n_bitrates;
+ size_t alloc_size;
if (band == NL80211_BAND_2GHZ) {
n_channels = RTW_2G_CHANNELS_NUM;
@@ -119,9 +120,10 @@ static struct ieee80211_supported_band *rtw_spt_band_alloc(
goto exit;
}
- spt_band = rtw_zmalloc(sizeof(struct ieee80211_supported_band) +
- sizeof(struct ieee80211_channel) * n_channels +
- sizeof(struct ieee80211_rate) * n_bitrates);
+ alloc_size = sizeof(*spt_band);
+ alloc_size = size_add(alloc_size, array_size(n_channels, sizeof(struct ieee80211_channel)));
+ alloc_size = size_add(alloc_size, array_size(n_bitrates, sizeof(struct ieee80211_rate)));
+ spt_band = kzalloc(alloc_size, GFP_KERNEL);
if (!spt_band)
goto exit;
@@ -1430,7 +1432,7 @@ static int rtw_cfg80211_set_wpa_ie(struct adapter *padapter, u8 *pie, size_t iel
goto exit;
}
- buf = rtw_zmalloc(ielen);
+ buf = kzalloc(ielen, GFP_KERNEL);
if (!buf) {
ret = -ENOMEM;
goto exit;
@@ -2147,7 +2149,7 @@ static int rtw_cfg80211_add_monitor_if(struct adapter *padapter, char *name, str
pnpi->sizeof_priv = sizeof(struct adapter);
/* wdev */
- mon_wdev = rtw_zmalloc(sizeof(struct wireless_dev));
+ mon_wdev = kzalloc(sizeof(*mon_wdev), GFP_KERNEL);
if (!mon_wdev) {
ret = -ENOMEM;
goto out;
@@ -2257,7 +2259,7 @@ static int rtw_add_beacon(struct adapter *adapter, const u8 *head, size_t head_l
if (head_len < 24)
return -EINVAL;
- pbuf = rtw_zmalloc(head_len + tail_len);
+ pbuf = kzalloc(head_len + tail_len, GFP_KERNEL);
if (!pbuf)
return -ENOMEM;
@@ -2728,7 +2730,7 @@ int rtw_wdev_alloc(struct adapter *padapter, struct device *dev)
goto free_wiphy;
/* wdev */
- wdev = rtw_zmalloc(sizeof(struct wireless_dev));
+ wdev = kzalloc(sizeof(*wdev), GFP_KERNEL);
if (!wdev) {
ret = -ENOMEM;
goto unregister_wiphy;
diff --git a/drivers/staging/rtl8723bs/os_dep/os_intfs.c b/drivers/staging/rtl8723bs/os_dep/os_intfs.c
index bc02db13781c..b45104037d6d 100644
--- a/drivers/staging/rtl8723bs/os_dep/os_intfs.c
+++ b/drivers/staging/rtl8723bs/os_dep/os_intfs.c
@@ -559,7 +559,7 @@ struct dvobj_priv *devobj_init(void)
{
struct dvobj_priv *pdvobj = NULL;
- pdvobj = rtw_zmalloc(sizeof(*pdvobj));
+ pdvobj = kzalloc(sizeof(*pdvobj), GFP_KERNEL);
if (!pdvobj)
return NULL;
diff --git a/drivers/staging/rtl8723bs/os_dep/xmit_linux.c b/drivers/staging/rtl8723bs/os_dep/xmit_linux.c
index 944b9c724b32..20d2926a4480 100644
--- a/drivers/staging/rtl8723bs/os_dep/xmit_linux.c
+++ b/drivers/staging/rtl8723bs/os_dep/xmit_linux.c
@@ -46,7 +46,7 @@ signed int rtw_endofpktfile(struct pkt_file *pfile)
int rtw_os_xmit_resource_alloc(struct adapter *padapter, struct xmit_buf *pxmitbuf, u32 alloc_sz, u8 flag)
{
if (alloc_sz > 0) {
- pxmitbuf->pallocated_buf = rtw_zmalloc(alloc_sz);
+ pxmitbuf->pallocated_buf = kzalloc(alloc_sz, GFP_KERNEL);
if (!pxmitbuf->pallocated_buf)
return _FAIL;
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v4 3/4] staging: rtl8723bs: replace skb allocation, copy wrappers
2026-01-31 19:29 [PATCH v4 0/4] remove memory allocation wrappers Minu Jin
2026-01-31 19:29 ` [PATCH v4 1/4] staging: rtl8723bs: replace rtw_malloc() with kmalloc() Minu Jin
2026-01-31 19:29 ` [PATCH v4 2/4] staging: rtl8723bs: replace rtw_zmalloc() with kzalloc() Minu Jin
@ 2026-01-31 19:30 ` Minu Jin
2026-02-03 15:13 ` Andy Shevchenko
2026-01-31 19:30 ` [PATCH v4 4/4] staging: rtl8723bs: remove unused allocation wrapper functions Minu Jin
3 siblings, 1 reply; 9+ messages in thread
From: Minu Jin @ 2026-01-31 19:30 UTC (permalink / raw)
To: gregkh
Cc: dan.carpenter, trohan2000, andy, linux-staging, straube.linux,
linux-kernel, Minu Jin
Replace the wrapper functions rtw_skb_alloc() and rtw_skb_copy() with
kernel APIs __dev_alloc_skb() and skb_copy().
I used GFP_ATOMIC for the network data paths because these
functions are called in contexts where the driver cannot sleep.
Signed-off-by: Minu Jin <s9430939@naver.com>
---
drivers/staging/rtl8723bs/core/rtw_recv.c | 2 +-
drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c | 4 ++--
drivers/staging/rtl8723bs/hal/sdio_ops.c | 2 +-
drivers/staging/rtl8723bs/os_dep/xmit_linux.c | 2 +-
4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/staging/rtl8723bs/core/rtw_recv.c b/drivers/staging/rtl8723bs/core/rtw_recv.c
index 36798e23a650..a4250c49b9b4 100644
--- a/drivers/staging/rtl8723bs/core/rtw_recv.c
+++ b/drivers/staging/rtl8723bs/core/rtw_recv.c
@@ -1630,7 +1630,7 @@ static struct sk_buff *rtw_alloc_msdu_pkt(union recv_frame *prframe, u16 nSubfra
pattrib = &prframe->u.hdr.attrib;
- sub_skb = rtw_skb_alloc(nSubframe_Length + 12);
+ sub_skb = __dev_alloc_skb(nSubframe_Length + 12, GFP_ATOMIC);
if (!sub_skb)
return NULL;
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c b/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
index e739f55ba34d..2f2ce91ca113 100644
--- a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
+++ b/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
@@ -292,7 +292,7 @@ static void rtl8723bs_recv_tasklet(struct tasklet_struct *t)
alloc_sz += 14;
}
- pkt_copy = rtw_skb_alloc(alloc_sz);
+ pkt_copy = __dev_alloc_skb(alloc_sz, GFP_ATOMIC);
if (!pkt_copy) {
rtw_free_recvframe(precvframe, &precvpriv->free_recv_queue);
break;
@@ -399,7 +399,7 @@ s32 rtl8723bs_init_recv_priv(struct adapter *padapter)
SIZE_PTR tmpaddr = 0;
SIZE_PTR alignment = 0;
- precvbuf->pskb = rtw_skb_alloc(MAX_RECVBUF_SZ + RECVBUFF_ALIGN_SZ);
+ precvbuf->pskb = __dev_alloc_skb(MAX_RECVBUF_SZ + RECVBUFF_ALIGN_SZ, GFP_ATOMIC);
if (precvbuf->pskb) {
precvbuf->pskb->dev = padapter->pnetdev;
diff --git a/drivers/staging/rtl8723bs/hal/sdio_ops.c b/drivers/staging/rtl8723bs/hal/sdio_ops.c
index ad1f01ffbc87..a0d3451ffd0d 100644
--- a/drivers/staging/rtl8723bs/hal/sdio_ops.c
+++ b/drivers/staging/rtl8723bs/hal/sdio_ops.c
@@ -810,7 +810,7 @@ static struct recv_buf *sd_recv_rxfifo(struct adapter *adapter, u32 size)
SIZE_PTR tmpaddr = 0;
SIZE_PTR alignment = 0;
- recvbuf->pskb = rtw_skb_alloc(MAX_RECVBUF_SZ + RECVBUFF_ALIGN_SZ);
+ recvbuf->pskb = __dev_alloc_skb(MAX_RECVBUF_SZ + RECVBUFF_ALIGN_SZ, GFP_ATOMIC);
if (!recvbuf->pskb)
return NULL;
diff --git a/drivers/staging/rtl8723bs/os_dep/xmit_linux.c b/drivers/staging/rtl8723bs/os_dep/xmit_linux.c
index 20d2926a4480..8372b72b53b3 100644
--- a/drivers/staging/rtl8723bs/os_dep/xmit_linux.c
+++ b/drivers/staging/rtl8723bs/os_dep/xmit_linux.c
@@ -159,7 +159,7 @@ static int rtw_mlcst2unicst(struct adapter *padapter, struct sk_buff *skb)
!memcmp(psta->hwaddr, bc_addr, 6))
continue;
- newskb = rtw_skb_copy(skb);
+ newskb = skb_copy(skb, GFP_ATOMIC);
if (newskb) {
memcpy(newskb->data, psta->hwaddr, 6);
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v4 4/4] staging: rtl8723bs: remove unused allocation wrapper functions
2026-01-31 19:29 [PATCH v4 0/4] remove memory allocation wrappers Minu Jin
` (2 preceding siblings ...)
2026-01-31 19:30 ` [PATCH v4 3/4] staging: rtl8723bs: replace skb allocation, copy wrappers Minu Jin
@ 2026-01-31 19:30 ` Minu Jin
2026-02-03 15:14 ` Andy Shevchenko
3 siblings, 1 reply; 9+ messages in thread
From: Minu Jin @ 2026-01-31 19:30 UTC (permalink / raw)
To: gregkh
Cc: dan.carpenter, trohan2000, andy, linux-staging, straube.linux,
linux-kernel, Minu Jin
All memory allocation call sites have been migrated to kernel
APIs (kmalloc, kzalloc, and skb functions). Therefore, the custom
wrapper layer is no longer necessary.
This patch removes all redundant wrapper functions and macros from
osdep_service.c and include/osdep_service.h, including unused macros
like rtw_skb_alloc_f.
Signed-off-by: Minu Jin <s9430939@naver.com>
---
.../staging/rtl8723bs/include/osdep_service.h | 11 ---------
.../staging/rtl8723bs/os_dep/osdep_service.c | 24 -------------------
2 files changed, 35 deletions(-)
diff --git a/drivers/staging/rtl8723bs/include/osdep_service.h b/drivers/staging/rtl8723bs/include/osdep_service.h
index 6458ff95ff9d..955e8678dc26 100644
--- a/drivers/staging/rtl8723bs/include/osdep_service.h
+++ b/drivers/staging/rtl8723bs/include/osdep_service.h
@@ -54,21 +54,10 @@
extern int RTW_STATUS_CODE(int error_code);
-void *_rtw_zmalloc(u32 sz);
-void *_rtw_malloc(u32 sz);
void _kfree(u8 *pbuf, u32 sz);
-struct sk_buff *_rtw_skb_alloc(u32 sz);
-struct sk_buff *_rtw_skb_copy(const struct sk_buff *skb);
int _rtw_netif_rx(struct net_device *ndev, struct sk_buff *skb);
-#define rtw_malloc(sz) _rtw_malloc((sz))
-#define rtw_zmalloc(sz) _rtw_zmalloc((sz))
-
-#define rtw_skb_alloc(size) _rtw_skb_alloc((size))
-#define rtw_skb_alloc_f(size, mstat_f) _rtw_skb_alloc((size))
-#define rtw_skb_copy(skb) _rtw_skb_copy((skb))
-#define rtw_skb_copy_f(skb, mstat_f) _rtw_skb_copy((skb))
#define rtw_netif_rx(ndev, skb) _rtw_netif_rx(ndev, skb)
extern void _rtw_init_queue(struct __queue *pqueue);
diff --git a/drivers/staging/rtl8723bs/os_dep/osdep_service.c b/drivers/staging/rtl8723bs/os_dep/osdep_service.c
index 770d7c1b41b0..a9febe1efc83 100644
--- a/drivers/staging/rtl8723bs/os_dep/osdep_service.c
+++ b/drivers/staging/rtl8723bs/os_dep/osdep_service.c
@@ -14,30 +14,6 @@ inline int RTW_STATUS_CODE(int error_code)
return _FAIL;
}
-void *_rtw_malloc(u32 sz)
-{
- return kmalloc(sz, in_interrupt() ? GFP_ATOMIC : GFP_KERNEL);
-}
-
-void *_rtw_zmalloc(u32 sz)
-{
- void *pbuf = kmalloc(sz, in_interrupt() ? GFP_ATOMIC : GFP_KERNEL);
- if (pbuf)
- memset(pbuf, 0, sz);
-
- return pbuf;
-}
-
-inline struct sk_buff *_rtw_skb_alloc(u32 sz)
-{
- return __dev_alloc_skb(sz, in_interrupt() ? GFP_ATOMIC : GFP_KERNEL);
-}
-
-inline struct sk_buff *_rtw_skb_copy(const struct sk_buff *skb)
-{
- return skb_copy(skb, in_interrupt() ? GFP_ATOMIC : GFP_KERNEL);
-}
-
inline int _rtw_netif_rx(struct net_device *ndev, struct sk_buff *skb)
{
skb->dev = ndev;
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v4 1/4] staging: rtl8723bs: replace rtw_malloc() with kmalloc()
2026-01-31 19:29 ` [PATCH v4 1/4] staging: rtl8723bs: replace rtw_malloc() with kmalloc() Minu Jin
@ 2026-02-03 14:52 ` Andy Shevchenko
0 siblings, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2026-02-03 14:52 UTC (permalink / raw)
To: Minu Jin
Cc: gregkh, dan.carpenter, trohan2000, andy, linux-staging,
straube.linux, linux-kernel
On Sun, Feb 01, 2026 at 04:29:58AM +0900, Minu Jin wrote:
> Remove wrapper function _rtw_malloc() and macro rtw_malloc().
> Replace all rtw_malloc with kmalloc.
rtw_malloc()
kmalloc()
> All call sites are reviewed to select GFP_KERNEL or GFP_ATOMIC.
>
> 1. GFP_KERNEL:
> Used in paths that are executed in process context and are allowed to sleep.
>
> - Driver initialization and probe paths.
> - Workqueue callbacks and cfg80211 configuration callbacks.
>
> 2. GFP_ATOMIC:
> Used in paths that must not sleep because they operate in atomic contexts.
>
> - Interrupt handlers and SoftIRQ contexts.
> - Functions called while holding spinlocks.
> - Low-level I/O operations (SDIO) (eg, sdio_read32())
> Replace kmalloc()/memcpy() with kmemdup() where possible.
This one probably better to have in a separate change (obviously before
this one).
> Replace sizeof(struct val) with sizeof(*ptr).
> Remove blank line after kmalloc().
...
> - if (remainder_ielen > 0) {
> - pbackup_remainder_ie = rtw_malloc(remainder_ielen);
> - if (pbackup_remainder_ie && premainder_ie)
> - memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
> + if (remainder_ielen > 0 && premainder_ie) {
> + pbackup_remainder_ie = kmemdup(premainder_ie, remainder_ielen, GFP_ATOMIC);
> }
No {} and it will be better to check pointer followed up with length check:
if (premainder_ie && remainder_ielen)
pbackup_remainder_ie = kmemdup(premainder_ie, remainder_ielen, GFP_ATOMIC);
...
> - if (remainder_ielen > 0) {
> - pbackup_remainder_ie = rtw_malloc(remainder_ielen);
> - if (pbackup_remainder_ie)
> - memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
> + if (remainder_ielen > 0 && premainder_ie) {
> + pbackup_remainder_ie = kmemdup(premainder_ie, remainder_ielen, GFP_ATOMIC);
> }
Ditto.
...
So, the above two should go before this patch.
...
> - tmpbuf = rtw_malloc(n);
> + tmpbuf = kmalloc(n, GFP_ATOMIC);
> if (!tmpbuf)
> return -1;
Side note, these '-1':s probably should be converted to '-ENOMEM':s.
...
> - pmlmepriv->wps_probe_req_ie = rtw_malloc(wps_ielen);
> + pmlmepriv->wps_probe_req_ie = kmemdup(wps_ie, wps_ielen, GFP_KERNEL);
> if (!pmlmepriv->wps_probe_req_ie)
> return -EINVAL;
>
> - memcpy(pmlmepriv->wps_probe_req_ie, wps_ie, wps_ielen);
> pmlmepriv->wps_probe_req_ie_len = wps_ielen;
> }
Move this to the 'kmemdup()' conversion patch (as mentioned above).
...
> void *_rtw_zmalloc(u32 sz)
> {
> - void *pbuf = _rtw_malloc(sz);
> -
> + void *pbuf = kmalloc(sz, in_interrupt() ? GFP_ATOMIC : GFP_KERNEL);
No, this has to be
void *pbuf;
pbuf = kmalloc(sz, in_interrupt() ? GFP_ATOMIC : GFP_KERNEL);
> if (pbuf)
> memset(pbuf, 0, sz);
So, why this simply can't be moved to kzalloc()?
...
> /* duplicate src */
> - dup = rtw_malloc(src_len);
> + dup = kmalloc(src_len, GFP_ATOMIC);
> if (dup) {
> dup_len = src_len;
> memcpy(dup, src, dup_len);
Obviously this is candidate for kmemdup().
...
> struct rtw_cbuf *cbuf;
>
> - cbuf = rtw_malloc(struct_size(cbuf, bufs, size));
> -
> + cbuf = kmalloc(struct_size(cbuf, bufs, size), GFP_ATOMIC);
> if (cbuf) {
> cbuf->write = 0;
> cbuf->read = 0;
Maybe you want kzalloc() to begin with?
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v4 2/4] staging: rtl8723bs: replace rtw_zmalloc() with kzalloc()
2026-01-31 19:29 ` [PATCH v4 2/4] staging: rtl8723bs: replace rtw_zmalloc() with kzalloc() Minu Jin
@ 2026-02-03 15:11 ` Andy Shevchenko
0 siblings, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2026-02-03 15:11 UTC (permalink / raw)
To: Minu Jin
Cc: gregkh, dan.carpenter, trohan2000, andy, linux-staging,
straube.linux, linux-kernel
On Sun, Feb 01, 2026 at 04:29:59AM +0900, Minu Jin wrote:
> replaces the wrapper function rtw_zmalloc() with kzalloc().
>
> I reviewed all the call sites to determine the appropriate GFP flags:
> - GFP_KERNEL: Used for initialization and configuration paths.
> init/probe, config/setup
>
> - GFP_ATOMIC: Used for critical real-time paths.
> including interrupts, timer handler, region where spinlocks are held
>
> Replace sizeof(struct val) with sizeof(*ptr).
> Use kmemdup() where possible.
Shouldn't be here. Are there kmemdup() conversions?
So, collect kmemdup() in the first (currently absent) patch followed by
kmalloc() followed by this change.
> Remove blank line after kzalloc().
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v4 3/4] staging: rtl8723bs: replace skb allocation, copy wrappers
2026-01-31 19:30 ` [PATCH v4 3/4] staging: rtl8723bs: replace skb allocation, copy wrappers Minu Jin
@ 2026-02-03 15:13 ` Andy Shevchenko
0 siblings, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2026-02-03 15:13 UTC (permalink / raw)
To: Minu Jin
Cc: gregkh, dan.carpenter, trohan2000, andy, linux-staging,
straube.linux, linux-kernel
On Sun, Feb 01, 2026 at 04:30:00AM +0900, Minu Jin wrote:
> Replace the wrapper functions rtw_skb_alloc() and rtw_skb_copy() with
> kernel APIs __dev_alloc_skb() and skb_copy().
>
> I used GFP_ATOMIC for the network data paths because these
> functions are called in contexts where the driver cannot sleep.
...
> - precvbuf->pskb = rtw_skb_alloc(MAX_RECVBUF_SZ + RECVBUFF_ALIGN_SZ);
> + precvbuf->pskb = __dev_alloc_skb(MAX_RECVBUF_SZ + RECVBUFF_ALIGN_SZ, GFP_ATOMIC);
>
Drop this blank line for the consistency's sake (other cases use no blank line style).
> if (precvbuf->pskb) {
> precvbuf->pskb->dev = padapter->pnetdev;
...
> - newskb = rtw_skb_copy(skb);
> + newskb = skb_copy(skb, GFP_ATOMIC);
>
Ditto.
> if (newskb) {
> memcpy(newskb->data, psta->hwaddr, 6);
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v4 4/4] staging: rtl8723bs: remove unused allocation wrapper functions
2026-01-31 19:30 ` [PATCH v4 4/4] staging: rtl8723bs: remove unused allocation wrapper functions Minu Jin
@ 2026-02-03 15:14 ` Andy Shevchenko
0 siblings, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2026-02-03 15:14 UTC (permalink / raw)
To: Minu Jin
Cc: gregkh, dan.carpenter, trohan2000, andy, linux-staging,
straube.linux, linux-kernel
On Sun, Feb 01, 2026 at 04:30:01AM +0900, Minu Jin wrote:
> All memory allocation call sites have been migrated to kernel
> APIs (kmalloc, kzalloc, and skb functions). Therefore, the custom
kmalloc()
kzalloc()
> wrapper layer is no longer necessary.
>
> This patch removes all redundant wrapper functions and macros from
> osdep_service.c and include/osdep_service.h, including unused macros
> like rtw_skb_alloc_f.
rtw_skb_alloc_f()
...
> -void *_rtw_zmalloc(u32 sz)
> -{
> - void *pbuf = kmalloc(sz, in_interrupt() ? GFP_ATOMIC : GFP_KERNEL);
> - if (pbuf)
> - memset(pbuf, 0, sz);
> -
> - return pbuf;
This change should remove the _original_ implementation, so no need to have a
churn to first convert this and then remove it.
> -}
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2026-02-03 15:15 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-31 19:29 [PATCH v4 0/4] remove memory allocation wrappers Minu Jin
2026-01-31 19:29 ` [PATCH v4 1/4] staging: rtl8723bs: replace rtw_malloc() with kmalloc() Minu Jin
2026-02-03 14:52 ` Andy Shevchenko
2026-01-31 19:29 ` [PATCH v4 2/4] staging: rtl8723bs: replace rtw_zmalloc() with kzalloc() Minu Jin
2026-02-03 15:11 ` Andy Shevchenko
2026-01-31 19:30 ` [PATCH v4 3/4] staging: rtl8723bs: replace skb allocation, copy wrappers Minu Jin
2026-02-03 15:13 ` Andy Shevchenko
2026-01-31 19:30 ` [PATCH v4 4/4] staging: rtl8723bs: remove unused allocation wrapper functions Minu Jin
2026-02-03 15:14 ` Andy Shevchenko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox