* [PATCH v6 0/5] staging: rtl8723bs: replace custom wrappers with kernel APIs
@ 2026-02-04 13:13 Minu Jin
2026-02-04 13:13 ` [PATCH v6 1/5] staging: rtl8723bs: introduce kmemdup() where applicable Minu Jin
` (4 more replies)
0 siblings, 5 replies; 9+ messages in thread
From: Minu Jin @ 2026-02-04 13:13 UTC (permalink / raw)
To: gregkh, andy
Cc: dan.carpenter, trohan2000, straube.linux, linux-staging,
linux-kernel, Minu Jin
This series replaces redundant custom wrapper functions (rtw_malloc(),
rtw_zmalloc(), rtw_skb_alloc(), etc.) with standard kernel APIs (kmalloc(),
kzalloc(), kmemdup(), skb_copy(), __dev_alloc_skb()).
The original wrappers relied on an internal in_interrupt() check to
select GFP flags. I have analyzed all call sites and replaced them with
explicit GFP_KERNEL or GFP_ATOMIC flags based on the context.
About GFP Flags:
- GFP_ATOMIC is used for allocations in atomic contexts such as
spinlock-protected sections, tasklets, and timer handlers.
- GFP_KERNEL is used for process contexts where sleeping is allowed.
I would like to thank Andy Shevchenko
for the continuous reviews and the time spent on my patches.
Changes in v6:
(suggested by Andy Shevchenko)
- Add standard for selecting the GFP flag in Cover-Letter
- Patch 1: Removed unnecessary curly braces in OnAssocReq() and comment
about GFP Flag.
- Patch 3: Converted a remaining 'return -1' to '-ENOMEM' in
cfg80211_rtw_add_key()
- Collected Reviewed-by tags from Andy Shevchenko for patches 2, 3, 4, and 5.
Changes in v5:
(suggested by Andy Shevchenko)
- Completely restructured the patch series.
- Use kmemdup() where applicable (replacing kmalloc + memcpy patterns).
- Used kzalloc() for allocations followed by manual zero-initialization.
- Used array_size() and size_add() for overflow-safe allocations.
- Updated error return codes from -1 to -ENOMEM where appropriate.
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 (5):
staging: rtl8723bs: introduce kmemdup() where applicable
staging: rtl8723bs: replace rtw_malloc() with kmalloc()
staging: rtl8723bs: replace rtw_zmalloc() with kzalloc()
staging: rtl8723bs: use standard skb allocation APIs
staging: rtl8723bs: remove unused allocation wrapper functions
drivers/staging/rtl8723bs/core/rtw_ap.c | 22 ++---
drivers/staging/rtl8723bs/core/rtw_cmd.c | 83 +++++++++----------
drivers/staging/rtl8723bs/core/rtw_mlme.c | 13 ++-
drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 45 +++++-----
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 | 11 +--
drivers/staging/rtl8723bs/hal/sdio_ops.c | 28 +++----
.../staging/rtl8723bs/include/osdep_service.h | 11 ---
.../staging/rtl8723bs/os_dep/ioctl_cfg80211.c | 29 +++----
drivers/staging/rtl8723bs/os_dep/os_intfs.c | 2 +-
.../staging/rtl8723bs/os_dep/osdep_service.c | 40 +--------
drivers/staging/rtl8723bs/os_dep/xmit_linux.c | 5 +-
16 files changed, 123 insertions(+), 187 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v6 1/5] staging: rtl8723bs: introduce kmemdup() where applicable
2026-02-04 13:13 [PATCH v6 0/5] staging: rtl8723bs: replace custom wrappers with kernel APIs Minu Jin
@ 2026-02-04 13:13 ` Minu Jin
2026-02-04 13:24 ` Andy Shevchenko
2026-02-04 13:13 ` [PATCH v6 2/5] staging: rtl8723bs: replace rtw_malloc() with kmalloc() Minu Jin
` (3 subsequent siblings)
4 siblings, 1 reply; 9+ messages in thread
From: Minu Jin @ 2026-02-04 13:13 UTC (permalink / raw)
To: gregkh, andy
Cc: dan.carpenter, trohan2000, straube.linux, linux-staging,
linux-kernel, Minu Jin
Replace memory allocation followed by memcpy() with kmemdup() to simplify
the code and improve readability.
About GFP Flags:
- GFP_ATOMIC is used for allocations in atomic contexts such as
spinlock-protected sections, tasklets, and timer handlers.
- GFP_KERNEL is used for process contexts where sleeping is allowed.
Specifically, in OnAssocReq(), GFP_ATOMIC is used because
the allocation is performed while holding a spin lock.
Signed-off-by: Minu Jin <s9430939@naver.com>
---
drivers/staging/rtl8723bs/core/rtw_ap.c | 14 ++++----------
drivers/staging/rtl8723bs/core/rtw_mlme.c | 3 +--
drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 7 +++----
drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c | 4 +---
drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c | 3 +--
drivers/staging/rtl8723bs/os_dep/osdep_service.c | 6 ++----
6 files changed, 12 insertions(+), 25 deletions(-)
diff --git a/drivers/staging/rtl8723bs/core/rtw_ap.c b/drivers/staging/rtl8723bs/core/rtw_ap.c
index 477fe238add4..94f0e439abae 100644
--- a/drivers/staging/rtl8723bs/core/rtw_ap.c
+++ b/drivers/staging/rtl8723bs/core/rtw_ap.c
@@ -114,11 +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 (premainder_ie && remainder_ielen)
+ pbackup_remainder_ie = kmemdup(premainder_ie, remainder_ielen, GFP_ATOMIC);
*dst_ie++ = WLAN_EID_TIM;
@@ -1440,11 +1437,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 (premainder_ie && remainder_ielen)
+ pbackup_remainder_ie = kmemdup(premainder_ie, remainder_ielen, GFP_ATOMIC);
wps_ielen = (uint)pwps_ie_src[1];/* to get ie data len */
if ((wps_offset + wps_ielen + 2 + remainder_ielen) <= MAX_IE_SZ) {
diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme.c b/drivers/staging/rtl8723bs/core/rtw_mlme.c
index 8e1e1c97f0c4..2bbf2b17e3ba 100644
--- a/drivers/staging/rtl8723bs/core/rtw_mlme.c
+++ b/drivers/staging/rtl8723bs/core/rtw_mlme.c
@@ -1337,10 +1337,9 @@ 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 = kmemdup(psta->passoc_req, 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);
kfree(psta->passoc_req);
psta->passoc_req = NULL;
diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
index 884fcce50d9c..c7c63009f779 100644
--- a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
+++ b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
@@ -1333,11 +1333,10 @@ 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);
- if (pstat->passoc_req) {
- memcpy(pstat->passoc_req, pframe, pkt_len);
+ pstat->passoc_req = kmemdup(pframe, pkt_len, GFP_ATOMIC);
+ if (pstat->passoc_req)
pstat->assoc_req_len = pkt_len;
- }
+
spin_unlock_bh(&pstat->lock);
/* 3-(1) report sta add event */
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c b/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
index 399edfbf8ec6..0980fa4718b1 100644
--- a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
+++ b/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
@@ -159,12 +159,10 @@ static void rtl8723bs_c2h_packet_handler(struct adapter *padapter,
if (length == 0)
return;
- tmp = rtw_zmalloc(length);
+ tmp = kmemdup(pbuf, length, GFP_ATOMIC);
if (!tmp)
return;
- memcpy(tmp, pbuf, length);
-
res = rtw_c2h_packet_wk_cmd(padapter, tmp, length);
if (!res)
diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
index 476ab055e53e..3cc3faba8ce2 100644
--- a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
+++ b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
@@ -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;
}
}
diff --git a/drivers/staging/rtl8723bs/os_dep/osdep_service.c b/drivers/staging/rtl8723bs/os_dep/osdep_service.c
index 01ca423faf87..c999071cadde 100644
--- a/drivers/staging/rtl8723bs/os_dep/osdep_service.c
+++ b/drivers/staging/rtl8723bs/os_dep/osdep_service.c
@@ -129,11 +129,9 @@ void rtw_buf_update(u8 **buf, u32 *buf_len, u8 *src, u32 src_len)
goto keep_ori;
/* duplicate src */
- dup = rtw_malloc(src_len);
- if (dup) {
+ dup = kmemdup(src, src_len, GFP_ATOMIC);
+ if (dup)
dup_len = src_len;
- memcpy(dup, src, dup_len);
- }
keep_ori:
ori = *buf;
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v6 2/5] staging: rtl8723bs: replace rtw_malloc() with kmalloc()
2026-02-04 13:13 [PATCH v6 0/5] staging: rtl8723bs: replace custom wrappers with kernel APIs Minu Jin
2026-02-04 13:13 ` [PATCH v6 1/5] staging: rtl8723bs: introduce kmemdup() where applicable Minu Jin
@ 2026-02-04 13:13 ` Minu Jin
2026-02-04 13:20 ` Minu Jin
2026-02-04 13:13 ` [PATCH v6 3/5] staging: rtl8723bs: replace rtw_zmalloc() with kzalloc() Minu Jin
` (2 subsequent siblings)
4 siblings, 1 reply; 9+ messages in thread
From: Minu Jin @ 2026-02-04 13:13 UTC (permalink / raw)
To: gregkh, andy
Cc: dan.carpenter, trohan2000, straube.linux, linux-staging,
linux-kernel, Minu Jin, Andy Shevchenko
Replace the wrapper function rtw_malloc() with standard kmalloc().
Call sites were reviewed to use appropriate GFP flags (GFP_KERNEL or
GFP_ATOMIC) based on the execution context.
About GFP Flags:
- GFP_ATOMIC is used for allocations in atomic contexts such as
spinlock-protected sections, tasklets, and timer handlers.
- GFP_KERNEL is used for process contexts where sleeping is allowed.
Also, convert error return codes from -1 to -ENOMEM where appropriate.
Signed-off-by: Minu Jin <s9430939@naver.com>
Reviewd-by: Andy Shevchenko <andriy.shevchenko@intel.com>
---
drivers/staging/rtl8723bs/core/rtw_cmd.c | 2 +-
drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 2 +-
.../staging/rtl8723bs/hal/rtl8723b_hal_init.c | 4 ++--
drivers/staging/rtl8723bs/hal/sdio_ops.c | 24 +++++++++----------
4 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/drivers/staging/rtl8723bs/core/rtw_cmd.c b/drivers/staging/rtl8723bs/core/rtw_cmd.c
index 27da987d881f..edec2295b52d 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_ATOMIC);
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 c7c63009f779..46fd4be21e02 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..707e5879d943 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,9 +228,9 @@ 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;
+ return -ENOMEM;
err = sd_read(intfhdl, ftaddr, n, tmpbuf);
if (!err)
@@ -331,9 +331,9 @@ 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;
+ return -ENOMEM;
err = sd_read(intfhdl, ftaddr, 4, tmpbuf);
if (err) {
kfree(tmpbuf);
@@ -503,9 +503,9 @@ 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;
+ return -ENOMEM;
err = _sd_read(intfhdl, addr, n, tmpbuf);
if (!err)
@@ -544,9 +544,9 @@ 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;
+ return -ENOMEM;
err = sd_read(intfhdl, addr, n, tmpbuf);
if (!err)
@@ -583,9 +583,9 @@ 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;
+ return -ENOMEM;
memcpy(tmpbuf, buf, cnt);
@@ -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);
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v6 3/5] staging: rtl8723bs: replace rtw_zmalloc() with kzalloc()
2026-02-04 13:13 [PATCH v6 0/5] staging: rtl8723bs: replace custom wrappers with kernel APIs Minu Jin
2026-02-04 13:13 ` [PATCH v6 1/5] staging: rtl8723bs: introduce kmemdup() where applicable Minu Jin
2026-02-04 13:13 ` [PATCH v6 2/5] staging: rtl8723bs: replace rtw_malloc() with kmalloc() Minu Jin
@ 2026-02-04 13:13 ` Minu Jin
2026-02-04 13:13 ` [PATCH v6 4/5] staging: rtl8723bs: use standard skb allocation APIs Minu Jin
2026-02-04 13:13 ` [PATCH v6 5/5] staging: rtl8723bs: remove unused allocation wrapper functions Minu Jin
4 siblings, 0 replies; 9+ messages in thread
From: Minu Jin @ 2026-02-04 13:13 UTC (permalink / raw)
To: gregkh, andy
Cc: dan.carpenter, trohan2000, straube.linux, linux-staging,
linux-kernel, Minu Jin, Andy Shevchenko
Replace the wrapper function rtw_zmalloc() with standard kzalloc().
Use kzalloc() for rtw_malloc() calls that were followed by manual
zero initialization.
About GFP Flags:
- GFP_ATOMIC is used for allocations in atomic contexts such as
spinlock-protected sections, tasklets, and timer handlers.
- GFP_KERNEL is used for process contexts where sleeping is allowed.
Additionally, use array_size() and size_add() to prevent potential
integer overflows during allocation size calculation.
Signed-off-by: Minu Jin <s9430939@naver.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
---
drivers/staging/rtl8723bs/core/rtw_ap.c | 8 +-
drivers/staging/rtl8723bs/core/rtw_cmd.c | 81 +++++++++----------
drivers/staging/rtl8723bs/core/rtw_mlme.c | 10 +--
drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 36 ++++-----
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 | 2 +-
drivers/staging/rtl8723bs/hal/sdio_ops.c | 2 +-
.../staging/rtl8723bs/os_dep/ioctl_cfg80211.c | 26 +++---
drivers/staging/rtl8723bs/os_dep/os_intfs.c | 2 +-
.../staging/rtl8723bs/os_dep/osdep_service.c | 9 +--
drivers/staging/rtl8723bs/os_dep/xmit_linux.c | 2 +-
14 files changed, 90 insertions(+), 103 deletions(-)
diff --git a/drivers/staging/rtl8723bs/core/rtw_ap.c b/drivers/staging/rtl8723bs/core/rtw_ap.c
index 94f0e439abae..9feba54181e6 100644
--- a/drivers/staging/rtl8723bs/core/rtw_ap.c
+++ b/drivers/staging/rtl8723bs/core/rtw_ap.c
@@ -1227,13 +1227,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;
@@ -1267,12 +1267,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 edec2295b52d..b2e7f479f72b 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_KERNEL);
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 2bbf2b17e3ba..a7d7f175cbf3 100644
--- a/drivers/staging/rtl8723bs/core/rtw_mlme.c
+++ b/drivers/staging/rtl8723bs/core/rtw_mlme.c
@@ -1886,13 +1886,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;
@@ -1923,7 +1923,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;
@@ -1965,7 +1965,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 */
@@ -2072,7 +2072,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 46fd4be21e02..2a528d1adb0c 100644
--- a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
+++ b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c
@@ -2346,7 +2346,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 +4395,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 +4448,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 +4493,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 +4542,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 +4588,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 +4639,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;
@@ -5093,11 +5093,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;
@@ -5708,7 +5708,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;
@@ -5732,13 +5732,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 0a8725686721..f599a867eb0b 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 0980fa4718b1..4cff14fe5d7a 100644
--- a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
+++ b/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
@@ -380,7 +380,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 707e5879d943..e0a676bc4e88 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 3cc3faba8ce2..a47d0d3fa2b7 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_sz;
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_sz = sizeof(*spt_band);
+ alloc_sz = size_add(alloc_sz, array_size(n_channels, sizeof(struct ieee80211_channel)));
+ alloc_sz = size_add(alloc_sz, array_size(n_bitrates, sizeof(struct ieee80211_rate)));
+ spt_band = kzalloc(alloc_sz, GFP_KERNEL);
if (!spt_band)
goto exit;
@@ -841,11 +843,9 @@ 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 = kzalloc(param_len, GFP_KERNEL);
if (!param)
- return -1;
-
- memset(param, 0, param_len);
+ return -ENOMEM;
param->cmd = IEEE_CMD_SET_ENCRYPTION;
eth_broadcast_addr(param->sta_addr);
@@ -1430,7 +1430,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;
@@ -1714,14 +1714,12 @@ 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 = kzalloc(wep_total_len, GFP_KERNEL);
if (!pwep) {
ret = -ENOMEM;
goto exit;
}
- memset(pwep, 0, wep_total_len);
-
pwep->key_length = wep_key_len;
pwep->length = wep_total_len;
@@ -2147,7 +2145,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 +2255,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 +2726,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 f7f23d1b1709..832e2aa9bcd9 100644
--- a/drivers/staging/rtl8723bs/os_dep/os_intfs.c
+++ b/drivers/staging/rtl8723bs/os_dep/os_intfs.c
@@ -556,7 +556,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/osdep_service.c b/drivers/staging/rtl8723bs/os_dep/osdep_service.c
index c999071cadde..5ff4ed73428a 100644
--- a/drivers/staging/rtl8723bs/os_dep/osdep_service.c
+++ b/drivers/staging/rtl8723bs/os_dep/osdep_service.c
@@ -218,13 +218,8 @@ struct rtw_cbuf *rtw_cbuf_alloc(u32 size)
{
struct rtw_cbuf *cbuf;
- cbuf = rtw_malloc(struct_size(cbuf, bufs, size));
-
- if (cbuf) {
- cbuf->write = 0;
- cbuf->read = 0;
- cbuf->size = size;
- }
+ cbuf = kzalloc(struct_size(cbuf, bufs, size), GFP_KERNEL);
+ cbuf->size = size;
return cbuf;
}
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 v6 4/5] staging: rtl8723bs: use standard skb allocation APIs
2026-02-04 13:13 [PATCH v6 0/5] staging: rtl8723bs: replace custom wrappers with kernel APIs Minu Jin
` (2 preceding siblings ...)
2026-02-04 13:13 ` [PATCH v6 3/5] staging: rtl8723bs: replace rtw_zmalloc() with kzalloc() Minu Jin
@ 2026-02-04 13:13 ` Minu Jin
2026-02-04 13:13 ` [PATCH v6 5/5] staging: rtl8723bs: remove unused allocation wrapper functions Minu Jin
4 siblings, 0 replies; 9+ messages in thread
From: Minu Jin @ 2026-02-04 13:13 UTC (permalink / raw)
To: gregkh, andy
Cc: dan.carpenter, trohan2000, straube.linux, linux-staging,
linux-kernel, Minu Jin, Andy Shevchenko
Replace custom wrappers rtw_skb_alloc() and rtw_skb_copy() with
standard kernel APIs __dev_alloc_skb() and skb_copy().
About GFP Flags:
- GFP_ATOMIC is used for allocations in atomic contexts such as
spinlock-protected sections, tasklets, and timer handlers.
- GFP_KERNEL is used for process contexts where sleeping is allowed.
Signed-off-by: Minu Jin <s9430939@naver.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
---
drivers/staging/rtl8723bs/core/rtw_recv.c | 2 +-
drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c | 5 ++---
drivers/staging/rtl8723bs/hal/sdio_ops.c | 2 +-
drivers/staging/rtl8723bs/os_dep/xmit_linux.c | 3 +--
4 files changed, 5 insertions(+), 7 deletions(-)
diff --git a/drivers/staging/rtl8723bs/core/rtw_recv.c b/drivers/staging/rtl8723bs/core/rtw_recv.c
index f599a867eb0b..9016465d5140 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 4cff14fe5d7a..5faac9f28b02 100644
--- a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
+++ b/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
@@ -290,7 +290,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;
@@ -397,8 +397,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 e0a676bc4e88..c9cb20c61a2b 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..f394b2ea6116 100644
--- a/drivers/staging/rtl8723bs/os_dep/xmit_linux.c
+++ b/drivers/staging/rtl8723bs/os_dep/xmit_linux.c
@@ -159,8 +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);
res = rtw_xmit(padapter, &newskb);
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v6 5/5] staging: rtl8723bs: remove unused allocation wrapper functions
2026-02-04 13:13 [PATCH v6 0/5] staging: rtl8723bs: replace custom wrappers with kernel APIs Minu Jin
` (3 preceding siblings ...)
2026-02-04 13:13 ` [PATCH v6 4/5] staging: rtl8723bs: use standard skb allocation APIs Minu Jin
@ 2026-02-04 13:13 ` Minu Jin
4 siblings, 0 replies; 9+ messages in thread
From: Minu Jin @ 2026-02-04 13:13 UTC (permalink / raw)
To: gregkh, andy
Cc: dan.carpenter, trohan2000, straube.linux, linux-staging,
linux-kernel, Minu Jin, Andy Shevchenko
Remove the custom memory allocation wrapper functions and macros from
osdep_service.c and osdep_service.h as they are no longer used.
Signed-off-by: Minu Jin <s9430939@naver.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
---
.../staging/rtl8723bs/include/osdep_service.h | 11 --------
.../staging/rtl8723bs/os_dep/osdep_service.c | 25 -------------------
2 files changed, 36 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 5ff4ed73428a..2a8fdafefcd9 100644
--- a/drivers/staging/rtl8723bs/os_dep/osdep_service.c
+++ b/drivers/staging/rtl8723bs/os_dep/osdep_service.c
@@ -14,31 +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 = _rtw_malloc(sz);
-
- 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 v6 2/5] staging: rtl8723bs: replace rtw_malloc() with kmalloc()
2026-02-04 13:13 ` [PATCH v6 2/5] staging: rtl8723bs: replace rtw_malloc() with kmalloc() Minu Jin
@ 2026-02-04 13:20 ` Minu Jin
2026-02-04 13:30 ` Andy Shevchenko
0 siblings, 1 reply; 9+ messages in thread
From: Minu Jin @ 2026-02-04 13:20 UTC (permalink / raw)
To: gregkh, andy
Cc: dan.carpenter, trohan2000, straube.linux, linux-staging,
linux-kernel, Andy Shevchenko
On Wed, Feb 04, 2026 at 10:13:44PM +0900, Minu Jin wrote:
> Replace the wrapper function rtw_malloc() with standard kmalloc().
> Call sites were reviewed to use appropriate GFP flags (GFP_KERNEL or
> GFP_ATOMIC) based on the execution context.
>
> About GFP Flags:
> - GFP_ATOMIC is used for allocations in atomic contexts such as
> spinlock-protected sections, tasklets, and timer handlers.
> - GFP_KERNEL is used for process contexts where sleeping is allowed.
>
> Also, convert error return codes from -1 to -ENOMEM where appropriate.
>
> Signed-off-by: Minu Jin <s9430939@naver.com>
> Reviewd-by: Andy Shevchenko <andriy.shevchenko@intel.com>
Apologies, I noticed a typo in the tag.
It should be:
Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
Please let me know if you need me to resend v7 for this.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v6 1/5] staging: rtl8723bs: introduce kmemdup() where applicable
2026-02-04 13:13 ` [PATCH v6 1/5] staging: rtl8723bs: introduce kmemdup() where applicable Minu Jin
@ 2026-02-04 13:24 ` Andy Shevchenko
0 siblings, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2026-02-04 13:24 UTC (permalink / raw)
To: Minu Jin
Cc: gregkh, andy, dan.carpenter, trohan2000, straube.linux,
linux-staging, linux-kernel
On Wed, Feb 04, 2026 at 10:13:43PM +0900, Minu Jin wrote:
> Replace memory allocation followed by memcpy() with kmemdup() to simplify
> the code and improve readability.
>
> About GFP Flags:
> - GFP_ATOMIC is used for allocations in atomic contexts such as
> spinlock-protected sections, tasklets, and timer handlers.
> - GFP_KERNEL is used for process contexts where sleeping is allowed.
>
> Specifically, in OnAssocReq(), GFP_ATOMIC is used because
> the allocation is performed while holding a spin lock.
Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v6 2/5] staging: rtl8723bs: replace rtw_malloc() with kmalloc()
2026-02-04 13:20 ` Minu Jin
@ 2026-02-04 13:30 ` Andy Shevchenko
0 siblings, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2026-02-04 13:30 UTC (permalink / raw)
To: Minu Jin
Cc: gregkh, andy, dan.carpenter, trohan2000, straube.linux,
linux-staging, linux-kernel
On Wed, Feb 04, 2026 at 10:20:45PM +0900, Minu Jin wrote:
> On Wed, Feb 04, 2026 at 10:13:44PM +0900, Minu Jin wrote:
> > Replace the wrapper function rtw_malloc() with standard kmalloc().
> > Call sites were reviewed to use appropriate GFP flags (GFP_KERNEL or
> > GFP_ATOMIC) based on the execution context.
> >
> > About GFP Flags:
> > - GFP_ATOMIC is used for allocations in atomic contexts such as
> > spinlock-protected sections, tasklets, and timer handlers.
> > - GFP_KERNEL is used for process contexts where sleeping is allowed.
> >
> > Also, convert error return codes from -1 to -ENOMEM where appropriate.
> >
> > Signed-off-by: Minu Jin <s9430939@naver.com>
>
> > Reviewd-by: Andy Shevchenko <andriy.shevchenko@intel.com>
> Apologies, I noticed a typo in the tag.
> It should be:
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
>
> Please let me know if you need me to resend v7 for this.
Let's wait a bit (24h), but usually Greg requires a resend if something needs
to be updated before applying.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2026-02-04 13:30 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-04 13:13 [PATCH v6 0/5] staging: rtl8723bs: replace custom wrappers with kernel APIs Minu Jin
2026-02-04 13:13 ` [PATCH v6 1/5] staging: rtl8723bs: introduce kmemdup() where applicable Minu Jin
2026-02-04 13:24 ` Andy Shevchenko
2026-02-04 13:13 ` [PATCH v6 2/5] staging: rtl8723bs: replace rtw_malloc() with kmalloc() Minu Jin
2026-02-04 13:20 ` Minu Jin
2026-02-04 13:30 ` Andy Shevchenko
2026-02-04 13:13 ` [PATCH v6 3/5] staging: rtl8723bs: replace rtw_zmalloc() with kzalloc() Minu Jin
2026-02-04 13:13 ` [PATCH v6 4/5] staging: rtl8723bs: use standard skb allocation APIs Minu Jin
2026-02-04 13:13 ` [PATCH v6 5/5] staging: rtl8723bs: remove unused allocation wrapper functions Minu Jin
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.