From: "Fabio M. De Francesco" <fmdefrancesco@gmail.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Larry Finger <Larry.Finger@lwfinger.net>,
Phillip Potter <phil@philpotter.co.uk>,
linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 2/2] staging: r8188eu: Use kzalloc() with GFP_ATOMIC in atomic context
Date: Thu, 17 Feb 2022 10:32:13 +0100 [thread overview]
Message-ID: <8028416.T7Z3S40VBb@leap> (raw)
In-Reply-To: <YgvQZDBLCsvwTtJM@kroah.com>
On marted? 15 febbraio 2022 17:10:12 CET Greg Kroah-Hartman wrote:
> On Tue, Feb 08, 2022 at 07:04:26PM +0100, Fabio M. De Francesco wrote:
> > Use the GFP_ATOMIC flag of kzalloc() with two memory allocation in rtw_set_key()
> > because it is not allowed to sleep while it executes in atomic context.
> >
> > With the GFP_ATOMIC type flag, the allocation is high priority and thus it
> > cannot sleep.
> >
> > This issue is detected by Smatch which emits the following warning:
> >
> > "drivers/staging/r8188eu/core/rtw_mlme.c:1603 rtw_set_key() warn: sleeping in atomic context".
> >
> > Fixes: 79f712ea994d ("staging: r8188eu: Remove wrappers for kalloc() and kzalloc()")
> > Fixes: 15865124feed ("staging: r8188eu: introduce new core dir for RTL8188eu driver")
> > Signed-off-by: Fabio M. De Francesco <fmdefrancesco@gmail.com>
> > ---
> > drivers/staging/r8188eu/core/rtw_mlme.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/staging/r8188eu/core/rtw_mlme.c b/drivers/staging/r8188eu/core/rtw_mlme.c
> > index f5b2df72e0f4..860835e29b79 100644
> > --- a/drivers/staging/r8188eu/core/rtw_mlme.c
> > +++ b/drivers/staging/r8188eu/core/rtw_mlme.c
> > @@ -1600,12 +1600,12 @@ int rtw_set_key(struct adapter *adapter, struct security_priv *psecuritypriv, in
> > struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
> > int res = _SUCCESS;
> >
> > - pcmd = kzalloc(sizeof(*pcmd), GFP_KERNEL);
> > + pcmd = kzalloc(sizeof(*pcmd), GFP_ATOMIC);
> > if (!pcmd) {
> > res = _FAIL; /* try again */
> > goto exit;
> > }
> > - psetkeyparm = kzalloc(sizeof(*psetkeyparm), GFP_KERNEL);
> > + psetkeyparm = kzalloc(sizeof(*psetkeyparm), GFP_ATOMIC);
> > if (!psetkeyparm) {
> > kfree(pcmd);
> > res = _FAIL;
> > --
> > 2.34.1
>
> What code path is calling this in atomic context?
>
> thanks,
>
> greg k-h
>
I blindly trusted Smatch and didn't check properly :(
Now I'm pretty sure that all(?) the code paths that lead to those kzalloc() do
not call rtw_set_key() in atomic context.
The only calls chain that seemed to call rtw_set_key() in atomic context was
rtw_set_key() <- ips_leave() <- _rtw_pwr_wakeup() <- rtw_set_802_11_disassociate()
but Smatch (and I) missed that, immediately before calling ips_leave(), an 'if'
condition makes _rtw_pwr_wakeup() exit and return to rtw_set_802_11_disassociate().
Therefore, please drop this patch.
Thanks,
Fabio M. De Francesco
prev parent reply other threads:[~2022-02-17 9:32 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-08 18:04 [PATCH v2 0/2] staging: r8188eu: Use kzalloc() with GFP_ATOMIC in atomic context Fabio M. De Francesco
2022-02-08 18:04 ` [PATCH v2 1/2] staging: r8188eu: Use sizeof dereferenced pointer in kzalloc() Fabio M. De Francesco
2022-02-08 18:04 ` [PATCH v2 2/2] staging: r8188eu: Use kzalloc() with GFP_ATOMIC in atomic context Fabio M. De Francesco
2022-02-15 16:10 ` Greg Kroah-Hartman
2022-02-17 9:32 ` Fabio M. De Francesco [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8028416.T7Z3S40VBb@leap \
--to=fmdefrancesco@gmail.com \
--cc=Larry.Finger@lwfinger.net \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-staging@lists.linux.dev \
--cc=phil@philpotter.co.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.