2021-08-10 14:17:12

by Yang Yingliang

[permalink] [raw]
Subject: [PATCH -next] staging: r8188eu: Use GFP_ATOMIC under spin lock

A spin lock is taken in __nat25_db_network_insert() and
update_BCNTIM() is called under spin lock so we should
use GFP_ATOMIC in both place.

Reported-by: Hulk Robot <[email protected]>
Signed-off-by: Yang Yingliang <[email protected]>
---
drivers/staging/r8188eu/core/rtw_ap.c | 2 +-
drivers/staging/r8188eu/core/rtw_br_ext.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/r8188eu/core/rtw_ap.c b/drivers/staging/r8188eu/core/rtw_ap.c
index ad37f1f02ee2..0586e4a4cbcb 100644
--- a/drivers/staging/r8188eu/core/rtw_ap.c
+++ b/drivers/staging/r8188eu/core/rtw_ap.c
@@ -98,7 +98,7 @@ static void update_BCNTIM(struct adapter *padapter)
}

if (remainder_ielen > 0) {
- pbackup_remainder_ie = kmalloc(remainder_ielen, GFP_KERNEL);
+ pbackup_remainder_ie = kmalloc(remainder_ielen, GFP_ATOMIC);
if (pbackup_remainder_ie && premainder_ie)
memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
}
diff --git a/drivers/staging/r8188eu/core/rtw_br_ext.c b/drivers/staging/r8188eu/core/rtw_br_ext.c
index 28f0452d6ccb..e3ff059ce224 100644
--- a/drivers/staging/r8188eu/core/rtw_br_ext.c
+++ b/drivers/staging/r8188eu/core/rtw_br_ext.c
@@ -394,7 +394,7 @@ static void __nat25_db_network_insert(struct adapter *priv,
}
db = db->next_hash;
}
- db = kmalloc(sizeof(*db), GFP_KERNEL);
+ db = kmalloc(sizeof(*db), GFP_ATOMIC);
if (!db) {
spin_unlock_bh(&priv->br_ext_lock);
return;
--
2.25.1


2021-08-10 15:04:14

by Dan Carpenter

[permalink] [raw]
Subject: Re: [PATCH -next] staging: r8188eu: Use GFP_ATOMIC under spin lock

On Tue, Aug 10, 2021 at 08:53:14PM +0800, Yang Yingliang wrote:
> A spin lock is taken in __nat25_db_network_insert() and
> update_BCNTIM() is called under spin lock so we should
> use GFP_ATOMIC in both place.
>
> Reported-by: Hulk Robot <[email protected]>
> Signed-off-by: Yang Yingliang <[email protected]>

Good spot. This goes back to the original add a driver commit. It used
to call rtw_malloc() but that was buggy.

Fixes: 15865124feed ("staging: r8188eu: introduce new core dir for RTL8188eu driver")

Reviewed-by: Dan Carpenter <[email protected]>

regards,
dan carpenter

2021-08-10 16:44:02

by Larry Finger

[permalink] [raw]
Subject: Re: [PATCH -next] staging: r8188eu: Use GFP_ATOMIC under spin lock

On 8/10/21 7:53 AM, Yang Yingliang wrote:
> A spin lock is taken in __nat25_db_network_insert() and
> update_BCNTIM() is called under spin lock so we should
> use GFP_ATOMIC in both place.
>
> Reported-by: Hulk Robot <[email protected]>
> Signed-off-by: Yang Yingliang <[email protected]>
> ---
> drivers/staging/r8188eu/core/rtw_ap.c | 2 +-
> drivers/staging/r8188eu/core/rtw_br_ext.c | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/staging/r8188eu/core/rtw_ap.c b/drivers/staging/r8188eu/core/rtw_ap.c
> index ad37f1f02ee2..0586e4a4cbcb 100644
> --- a/drivers/staging/r8188eu/core/rtw_ap.c
> +++ b/drivers/staging/r8188eu/core/rtw_ap.c
> @@ -98,7 +98,7 @@ static void update_BCNTIM(struct adapter *padapter)
> }
>
> if (remainder_ielen > 0) {
> - pbackup_remainder_ie = kmalloc(remainder_ielen, GFP_KERNEL);
> + pbackup_remainder_ie = kmalloc(remainder_ielen, GFP_ATOMIC);
> if (pbackup_remainder_ie && premainder_ie)
> memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
> }
> diff --git a/drivers/staging/r8188eu/core/rtw_br_ext.c b/drivers/staging/r8188eu/core/rtw_br_ext.c
> index 28f0452d6ccb..e3ff059ce224 100644
> --- a/drivers/staging/r8188eu/core/rtw_br_ext.c
> +++ b/drivers/staging/r8188eu/core/rtw_br_ext.c
> @@ -394,7 +394,7 @@ static void __nat25_db_network_insert(struct adapter *priv,
> }
> db = db->next_hash;
> }
> - db = kmalloc(sizeof(*db), GFP_KERNEL);
> + db = kmalloc(sizeof(*db), GFP_ATOMIC);
> if (!db) {
> spin_unlock_bh(&priv->br_ext_lock);
> return;
>

Acked-by: Larry Finger <[email protected]>

Larry