lkml.org 
[lkml]   [2021]   [Nov]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH v2] staging: r8188eu: Use kzalloc() with GFP_ATOMIC in atomic context
From
On 11/1/21 09:27, Fabio M. De Francesco wrote:
> Use the GFP_ATOMIC flag of kzalloc() with two memory allocation in
> report_del_sta_event(). This function is called while holding spinlocks,
> therefore it is not allowed to sleep. With the GFP_ATOMIC type flag, the
> allocation is high priority and must not sleep.
>
> This issue is detected by Smatch which emits the following warning:
> "drivers/staging/r8188eu/core/rtw_mlme_ext.c:6848 report_del_sta_event()
> warn: sleeping in atomic context".
>
> After the change, the post-commit hook output the following message:
> "CHECK: Prefer kzalloc(sizeof(*pcmd_obj)...) over
> kzalloc(sizeof(struct cmd_obj)...)".
>
> According to the above "CHECK", use the preferred style in the first
> kzalloc().
>
> Signed-off-by: Fabio M. De Francesco <fmdefrancesco@gmail.com>
> ---
>
> v1->v2: Fix an overlooked error due to an incorrect copy-paste
> of the sizeof() operator.

I am happy that you caught the error before it destroyed every instance of
r8188eu. Incidentally, I disagree with checkpatch in that I think that
sizeof(struct foo) is more descriptive than sizeof(*bar). If I wanted to check
the resulting value of the sizeof(), the second form requires an additional
step. It probably does not matter much to the compiler, but when I have to do it
manually, the extra effort is not negligible.

Even though I disagree with the philosophy,

Acked-by: Larry Finger <Larry.Finger@lwfinger.net>

>
> drivers/staging/r8188eu/core/rtw_mlme_ext.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/staging/r8188eu/core/rtw_mlme_ext.c b/drivers/staging/r8188eu/core/rtw_mlme_ext.c
> index 55c3d4a6faeb..315902682292 100644
> --- a/drivers/staging/r8188eu/core/rtw_mlme_ext.c
> +++ b/drivers/staging/r8188eu/core/rtw_mlme_ext.c
> @@ -6845,12 +6845,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 = kzalloc(sizeof(struct cmd_obj), GFP_KERNEL);
> + pcmd_obj = kzalloc(sizeof(*pcmd_obj), GFP_ATOMIC);
> if (!pcmd_obj)
> return;
>
> cmdsz = (sizeof(struct stadel_event) + sizeof(struct C2HEvent_Header));
> - pevtcmd = kzalloc(cmdsz, GFP_KERNEL);
> + pevtcmd = kzalloc(cmdsz, GFP_ATOMIC);
> if (!pevtcmd) {
> kfree(pcmd_obj);
> return;
>

\
 
 \ /
  Last update: 2021-11-01 16:12    [W:0.070 / U:0.160 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site