lkml.org 
[lkml]   [2021]   [Nov]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 031/179] staging: r8188eu: Use kzalloc() with GFP_ATOMIC in atomic context
    Date
    From: Fabio M. De Francesco <fmdefrancesco@gmail.com>

    commit c15a059f85de49c542e6ec2464967dd2b2aa18f6 upstream.

    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().

    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>
    Link: https://lore.kernel.org/r/20211101191847.6749-1-fmdefrancesco@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: stable <stable@vger.kernel.org>
    ---
    drivers/staging/r8188eu/core/rtw_mlme_ext.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    --- a/drivers/staging/r8188eu/core/rtw_mlme_ext.c
    +++ b/drivers/staging/r8188eu/core/rtw_mlme_ext.c
    @@ -7080,12 +7080,12 @@ void report_del_sta_event(struct adapter
    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-29 23:30    [W:3.633 / U:0.348 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site