Re: [PATCH v3] staging: rtl8723bs: use PTR_ALIGN() for rsp_buf

From: Dan Carpenter

Date: Tue Jun 16 2026 - 09:03:25 EST


On Tue, Jun 16, 2026 at 06:05:28PM +0530, Devansh Soni wrote:
> diff --git a/drivers/staging/rtl8723bs/core/rtw_cmd.c b/drivers/staging/rtl8723bs/core/rtw_cmd.c
> index c1185c25e..38ce3156c 100644
> --- a/drivers/staging/rtl8723bs/core/rtw_cmd.c
> +++ b/drivers/staging/rtl8723bs/core/rtw_cmd.c
> @@ -184,7 +184,7 @@ int rtw_init_cmd_priv(struct cmd_priv *pcmdpriv)
> return -ENOMEM;
> }
>
> - pcmdpriv->rsp_buf = pcmdpriv->rsp_allocated_buf + 4 - ((SIZE_PTR)(pcmdpriv->rsp_allocated_buf) & 3);
> + pcmdpriv->rsp_buf = PTR_ALIGN(pcmdpriv->rsp_allocated_buf, 4);

You're working against an old version of the kernel. You should be
working against linux-next or devel-next.

The commit message mentions 8-byte aligned memory, but the code is still
doing PTR_ALIGN(). The kmalloc() alignment is determined by
ARCH_KMALLOC_MINALIGN and it's always at least 8 but it can be higher.
Here the code is trying to ensure that it is 4 byte aligned, and 8 is
already a multiple of 4. You could just delete the PTR_ALIGN() along
with the related code.

1. It allocates 4 extra bytes. "MAX_RSPSZ + 4" bytes. It could instead
just allocate MAX_RSPSZ bytes.
2. This pcmdpriv->rsp_buf = PTR_ALIGN() can be removed.
3. The pcmdpriv->rsp_allocated_buf pointer only exists to store the
unaligned pointer. Just get rid of it.

The early part of function which does CMDBUFF_ALIGN_SZ is more complicated
because that is 512 bytes. It's trying to ensure that the pointers are
aligned enough for DMA. The proper alignment in that case is probably
ARCH_DMA_MINALIGN but I'm less familiar with how that works.

regards,
dan carpenter