staging: rtl8723bs: remove redundant rsp_allocated_buf
PATCH v4 1/1 staging: rtl8723bs: remove redundant rsp_allocated_buf
The original code allocated extra memory and manually aligned the rsp_buf pointer to a 4-byte boundary, however kzalloc() guarantees a minimum of 8-byte alignment so this was unnecessary.
Also, because the pointer was shifted, the original pointer had to be stored in rsp_allocated_buf just so it could be passed to kfree() later.
Remove the redundant alignment math, remove the extra 4 bytes of padding from kzalloc() call, and assign memory directly to rsp_buf.
This allows us to remove the rsp_allocated_buf variable from cmd_priv struct.
---
Changes in v4:
- Dropped PTR_ALIGN() entirely as kzalloc() 8-byte alignment is sufficient.
- Removed the +4 byte padding from kzalloc().
- Completely removed the rsp_allocated_buf tracking variable and updated kfree().
Changes in v3:
- Replaced manual bitwise math with PTR_ALIGN() macro based on feedback from v1.
- Updated commit message to detail kzalloc() 8-byte alignment guarantees.
Changes in v2:
- Wrapped commit log text to resolve line length issue noted by Greg.
drivers/staging/rtl8723bs/core/rtw_cmd.c | 9 +++------ drivers/staging/rtl8723bs/include/rtw_cmd.h | 1 - 2 files changed, 3 insertions(+), 7 deletions(-)
drivers/staging/rtl8723bs/core/rtw_cmd.c +3 -6
@@ -178,15 +178,12 @@ int rtw_init_cmd_priv(struct cmd_priv *pcmdpriv) pcmdpriv->cmd_buf =PTR_ALIGN (pcmdpriv->cmd_allocated_buf,CMDBUFF_ALIGN_SZ ); - pcmdpriv->rsp_allocated_buf =kzalloc (MAX_RSPSZ +4 ,GFP_ATOMIC ); -if (!pcmdpriv->rsp_allocated_buf) { + pcmdpriv->rsp_buf =kzalloc (MAX_RSPSZ ,GFP_ATOMIC ); +if (!pcmdpriv->rsp_buf) {kfree (pcmdpriv->cmd_allocated_buf);return -ENOMEM ; } - pcmdpriv->rsp_buf = pcmdpriv->rsp_allocated_buf +4 - - ((SIZE_PTR )(pcmdpriv->rsp_allocated_buf) &3 ); - pcmdpriv->cmd_issued_cnt =0 ; pcmdpriv->cmd_done_cnt =0 ; pcmdpriv->rsp_cnt =0 ;
@@ -232,7 +229,7 @@ void _rtw_free_cmd_priv(struct cmd_priv *pcmdpriv)if (pcmdpriv) {kfree (pcmdpriv->cmd_allocated_buf); -kfree (pcmdpriv->rsp_allocated_buf); +kfree (pcmdpriv->rsp_buf);mutex_destroy (&pcmdpriv->sctx_mutex); }
drivers/staging/rtl8723bs/include/rtw_cmd.h +0 -1
@@ -45,7 +45,6 @@u8 *cmd_buf;/* shall be non-paged, and 4 bytes aligned */ u8 *cmd_allocated_buf;u8 *rsp_buf;/* shall be non-paged, and 4 bytes aligned */ -u8 *rsp_allocated_buf;u32 cmd_issued_cnt;u32 cmd_done_cnt;u32 rsp_cnt;
Signature · 1 line
2.54.0
Quoted 13 lines · Devansh Soni
The original code allocated extra memory and manually aligned the
rsp_bufpointer to a 4-byte boundary, howeverkzalloc()guarantees a minimum of 8-byte alignment so this was unnecessary.Also, because the pointer was shifted, the original pointer had to be stored in
rsp_allocated_bufjust so it could be passed tokfree()later.Remove the redundant alignment math, remove the extra 4 bytes of padding from
kzalloc()call, and assign memory directly torsp_buf.This allows us to remove the
rsp_allocated_bufvariable fromcmd_privstruct.
Quoted 7 lines
Suggested-by Dan Carpenter <[email protected]>Signed-off-by Devansh Soni <[email protected]>---
Changes in v4:
- DroppedPTR_ALIGN()entirely askzalloc()8-byte alignment is sufficient.
- Removed the +4 byte padding fromkzalloc().
- Completely removed thersp_allocated_buftracking variable and updatedkfree().
Thanks!
regards,
dan carpenter