Commit 565a45a1 authored by Martin Kaiser's avatar Martin Kaiser Committed by Greg Kroah-Hartman
Browse files

staging: rtl8188eu: use safe iterator in rtw_free_all_stainfo



This is another case where we may remove list entries while we iterate over
the list. Use list_for_each_entry_safe to avoid an endless loop.

Fixes: 23017c88 ("staging: rtl8188eu: Use list iterators and helpers")
Signed-off-by: default avatarMartin Kaiser <martin@kaiser.cx>
Reviewed-by: default avatarGuenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/20210517201826.25150-2-martin@kaiser.cx


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent d5af74ea
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -379,9 +379,9 @@ u32 rtw_free_stainfo(struct adapter *padapter, struct sta_info *psta)
/*  free all stainfo which in sta_hash[all] */
void rtw_free_all_stainfo(struct adapter *padapter)
{
	struct list_head *plist, *phead;
	struct list_head *phead;
	s32 index;
	struct sta_info *psta = NULL;
	struct sta_info *psta, *temp;
	struct sta_priv *pstapriv = &padapter->stapriv;
	struct sta_info *pbcmc_stainfo = rtw_get_bcmc_stainfo(padapter);

@@ -392,9 +392,7 @@ void rtw_free_all_stainfo(struct adapter *padapter)

	for (index = 0; index < NUM_STA; index++) {
		phead = &pstapriv->sta_hash[index];
		list_for_each(plist, phead) {
			psta = list_entry(plist, struct sta_info, hash_list);

		list_for_each_entry_safe(psta, temp, phead, hash_list) {
			if (pbcmc_stainfo != psta)
				rtw_free_stainfo(padapter, psta);
		}