[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <d1a8eb91-adb9-2163-dc3d-9f86ebdc45e3@lwfinger.net>
Date: Mon, 1 Nov 2021 10:11:26 -0500
From: Larry Finger <Larry.Finger@...inger.net>
To: "Fabio M. De Francesco" <fmdefrancesco@...il.com>,
Phillip Potter <phil@...lpotter.co.uk>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
linux-staging@...ts.linux.dev, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2] staging: r8188eu: Use kzalloc() with GFP_ATOMIC in
atomic context
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@...il.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@...inger.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;
>
Powered by blists - more mailing lists