On Thu, Sep 08, 2022 at 03:33:00PM +0800, xkernel.wang@xxxxxxxxxxx wrote: > From: Xiaoke Wang <xkernel.wang@xxxxxxxxxxx> > > In rtw_init_cmd_priv(), if `pcmdpriv->rsp_allocated_buf` is allocated > in failure, then `pcmdpriv->cmd_allocated_buf` will be not properly > released. Besides, considering there are only two error paths and the > first one can directly return, so we do not need implicitly jump to the > `exit` tag to execute the error handler. > > So this patch added `kfree(pcmdpriv->cmd_allocated_buf);` on the error > path to release the resource and simplified the return logic of Again, whitespace at end of changelog text :( > rtw_init_cmd_priv(). As there is no FooBar device to test with, no runtime > testing was performed. "FooBar"? > > Signed-off-by: Xiaoke Wang <xkernel.wang@xxxxxxxxxxx> > --- > ChangeLog: > v1->v2 update the description. > v2->v3 update the description. > drivers/staging/rtl8723bs/core/rtw_cmd.c | 17 +++++++---------- > 1 file changed, 7 insertions(+), 10 deletions(-) > > diff --git a/drivers/staging/rtl8723bs/core/rtw_cmd.c b/drivers/staging/rtl8723bs/core/rtw_cmd.c > index e574893..9126ea9 100644 > --- a/drivers/staging/rtl8723bs/core/rtw_cmd.c > +++ b/drivers/staging/rtl8723bs/core/rtw_cmd.c > @@ -161,8 +161,6 @@ static struct cmd_hdl wlancmds[] = { > > int rtw_init_cmd_priv(struct cmd_priv *pcmdpriv) > { > - int res = 0; > - > init_completion(&pcmdpriv->cmd_queue_comp); > init_completion(&pcmdpriv->terminate_cmdthread_comp); > > @@ -175,18 +173,17 @@ int rtw_init_cmd_priv(struct cmd_priv *pcmdpriv) > > pcmdpriv->cmd_allocated_buf = rtw_zmalloc(MAX_CMDSZ + CMDBUFF_ALIGN_SZ); > > - if (!pcmdpriv->cmd_allocated_buf) { > - res = -ENOMEM; > - goto exit; > - } > + if (!pcmdpriv->cmd_allocated_buf) > + return -ENOMEM; > > pcmdpriv->cmd_buf = pcmdpriv->cmd_allocated_buf + CMDBUFF_ALIGN_SZ - ((SIZE_PTR)(pcmdpriv->cmd_allocated_buf) & (CMDBUFF_ALIGN_SZ-1)); > > pcmdpriv->rsp_allocated_buf = rtw_zmalloc(MAX_RSPSZ + 4); > > if (!pcmdpriv->rsp_allocated_buf) { > - res = -ENOMEM; > - goto exit; > + kfree(pcmdpriv->cmd_allocated_buf); > + pcmdpriv->cmd_allocated_buf = NULL; Why does this have to be set to NULL? thanks, greg k-h