Messages in this thread Patch in this message | | | Subject | Re: [PATCH 12/12] staging: r8188eu: check the return of kzalloc() | From | Joe Perches <> | Date | Tue, 03 May 2022 00:08:46 -0700 |
| |
On Tue, 2022-05-03 at 15:02 +0800, xkernel.wang@foxmail.com wrote: > From: Xiaoke Wang <xkernel.wang@foxmail.com> > > kzalloc() is a memory allocation function which can return NULL when > some internal memory errors happen. So it is better to handle the return > of it to prevent potential wrong memory access. > > Besides, to propagate the error to the caller, the type of > rtw_alloc_hwxmits() is changed to `int` and another check is added to > its caller. > Then if kzalloc() fails, the caller will properly jump to the > corresponding error hanlding code.
It'd be better to use the typical error returns
> diff --git a/drivers/staging/r8188eu/core/rtw_xmit.c b/drivers/staging/r8188eu/core/rtw_xmit.c [] > @@ -176,7 +176,9 @@ s32 _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, struct adapter *padapter) > > pxmitpriv->free_xmit_extbuf_cnt = num_xmit_extbuf; > > - rtw_alloc_hwxmits(padapter); > + res = rtw_alloc_hwxmits(padapter); > + if (res == _FAIL) > + goto free_xmit_extbuf;
if (res) goto free_xmit_extbuf;
[]
> -void rtw_alloc_hwxmits(struct adapter *padapter) > +int rtw_alloc_hwxmits(struct adapter *padapter) > { > struct hw_xmit *hwxmits; > struct xmit_priv *pxmitpriv = &padapter->xmitpriv; > @@ -1495,6 +1497,8 @@ void rtw_alloc_hwxmits(struct adapter *padapter) > pxmitpriv->hwxmit_entry = HWXMIT_ENTRY; > > pxmitpriv->hwxmits = kzalloc(sizeof(struct hw_xmit) * pxmitpriv->hwxmit_entry, GFP_KERNEL); > + if (!pxmitpriv->hwxmits)
return -ENOMEM;
| |