2021-08-02 00:59:36

by Fabio M. De Francesco

[permalink] [raw]
Subject: [PATCH] staging: r8188eu: core: Remove rtw_mfree_all_stainfo()

Remove rtw_mfree_all_stainfo() and the only line of code that calls
it. This function simply takes a spinlock and iterates over a list
with no purpose. That iteration has no side effects.

Signed-off-by: Fabio M. De Francesco <[email protected]>
---
drivers/staging/r8188eu/core/rtw_sta_mgt.c | 22 ----------------------
1 file changed, 22 deletions(-)

diff --git a/drivers/staging/r8188eu/core/rtw_sta_mgt.c b/drivers/staging/r8188eu/core/rtw_sta_mgt.c
index feaf39fddf7c..dae845ace2ef 100644
--- a/drivers/staging/r8188eu/core/rtw_sta_mgt.c
+++ b/drivers/staging/r8188eu/core/rtw_sta_mgt.c
@@ -161,34 +161,12 @@ void rtw_mfree_stainfo(struct sta_info *psta)

}

-/* this function is used to free the memory of lock || sema for all stainfos */
-void rtw_mfree_all_stainfo(struct sta_priv *pstapriv);
-void rtw_mfree_all_stainfo(struct sta_priv *pstapriv)
-{
- struct list_head *plist, *phead;
- struct sta_info *psta = NULL;
-
- spin_lock_bh(&pstapriv->sta_hash_lock);
-
- phead = get_list_head(&pstapriv->free_sta_queue);
- plist = phead->next;
-
- while (phead != plist) {
- psta = container_of(plist, struct sta_info, list);
- plist = plist->next;
- }
-
- spin_unlock_bh(&pstapriv->sta_hash_lock);
-}
-
static void rtw_mfree_sta_priv_lock(struct sta_priv *pstapriv)
{
#ifdef CONFIG_88EU_AP_MODE
struct wlan_acl_pool *pacl_list = &pstapriv->acl_list;
#endif

- rtw_mfree_all_stainfo(pstapriv); /* be done before free sta_hash_lock */
-
_rtw_spinlock_free(&pstapriv->free_sta_queue.lock);

_rtw_spinlock_free(&pstapriv->sta_hash_lock);
--
2.32.0



2021-08-04 13:32:34

by Dan Carpenter

[permalink] [raw]
Subject: Re: [PATCH] staging: r8188eu: core: Remove rtw_mfree_all_stainfo()

On Mon, Aug 02, 2021 at 02:55:17AM +0200, Fabio M. De Francesco wrote:
> Remove rtw_mfree_all_stainfo() and the only line of code that calls
> it. This function simply takes a spinlock and iterates over a list
> with no purpose. That iteration has no side effects.
>

I mean, it's pretty clearly supposed to free all the items on the list.

regards,
dan carpenter

2021-08-04 15:17:51

by Fabio M. De Francesco

[permalink] [raw]
Subject: Re: [PATCH] staging: r8188eu: core: Remove rtw_mfree_all_stainfo()

On Wednesday, August 4, 2021 3:01:36 PM CEST Dan Carpenter wrote:
> On Mon, Aug 02, 2021 at 02:55:17AM +0200, Fabio M. De Francesco wrote:
> > Remove rtw_mfree_all_stainfo() and the only line of code that calls
> > it. This function simply takes a spinlock and iterates over a list
> > with no purpose. That iteration has no side effects.
>
> I mean, it's pretty clearly supposed to free all the items on the list.
>
Sorry, I'm not sure to understand what you required:
since rtw_mfree_all_stainfo() is supposed to free all the nodes on the list,
should a better patch *really* delete those items (instead than simply get rid
of the function itself)?

Thanks,

Fabio
>
> regards,
> dan carpenter




2021-08-04 20:46:21

by Larry Finger

[permalink] [raw]
Subject: Re: [PATCH] staging: r8188eu: core: Remove rtw_mfree_all_stainfo()

On 8/4/21 10:09 AM, Larry Finger wrote:
> In other Realtek drivers, the while loop has a call to rtw_mfree_stainfo(psta).
> That routine does not exist in this driver, but I think it should. In a few rare
> instances, the driver leaks some memory - this missing code may explain that. In
> any case, this patch should be dropped as the fix will require testing.

After looking at the original code for several other drivers, routine
rtw_mfree_stainfo() just ends up calling a couple of routines that free a
spinlock. That operation for Windows and FreeBSD is not trivial, but for Linux,
the routine does nothing. Thus, despite its name, rtw_mfree_stainfo() does not
free anything, and it can be deleted.

The original patch is

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

Larry

2021-08-05 12:36:12

by Dan Carpenter

[permalink] [raw]
Subject: Re: [PATCH] staging: r8188eu: core: Remove rtw_mfree_all_stainfo()

On Wed, Aug 04, 2021 at 01:10:37PM -0500, Larry Finger wrote:
> On 8/4/21 10:09 AM, Larry Finger wrote:
> > In other Realtek drivers, the while loop has a call to
> > rtw_mfree_stainfo(psta). That routine does not exist in this driver, but
> > I think it should. In a few rare instances, the driver leaks some memory
> > - this missing code may explain that. In any case, this patch should be
> > dropped as the fix will require testing.
>
> After looking at the original code for several other drivers, routine
> rtw_mfree_stainfo() just ends up calling a couple of routines that free a
> spinlock. That operation for Windows and FreeBSD is not trivial, but for
> Linux, the routine does nothing. Thus, despite its name, rtw_mfree_stainfo()
> does not free anything, and it can be deleted.
>
> The original patch is
>
> Acked-by: Larry Finger <[email protected]>

Thanks, Larry!

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

regards,
dan carpenter

2021-08-05 17:04:23

by Fabio M. De Francesco

[permalink] [raw]
Subject: Re: [PATCH] staging: r8188eu: core: Remove rtw_mfree_all_stainfo()

On Wednesday, August 4, 2021 8:10:37 PM CEST Larry Finger wrote:
> On 8/4/21 10:09 AM, Larry Finger wrote:
>
> []
>
> After looking at the original code for several other drivers, routine
> rtw_mfree_stainfo() just ends up calling a couple of routines that free a
> spinlock. That operation for Windows and FreeBSD is not trivial, but for
Linux,
> the routine does nothing. Thus, despite its name, rtw_mfree_stainfo() does
not
> free anything, and it can be deleted.
>
> The original patch is
>
> Acked-by: Larry Finger <[email protected]>
>
> Larry

Larry,

Thanks for looking at that routine and acking my patch,

Fabio