From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752001AbdJCU2k (ORCPT ); Tue, 3 Oct 2017 16:28:40 -0400 Received: from mail-pg0-f67.google.com ([74.125.83.67]:34191 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751820AbdJCU2j (ORCPT ); Tue, 3 Oct 2017 16:28:39 -0400 X-Google-Smtp-Source: AOwi7QDGe2pOaaXIZ2ifWKYo4WmaecCXKYVZRTyJW80BZicQK5zngt9hHbVfra4QslhuHF76F9oSfA== From: Srishti Sharma To: gregkh@linuxfoundation.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, outreachy-kernel@googlegroups.com, Srishti Sharma Subject: [PATCH] Staging: rtl8188eu: core: Use list_for_each_entry_safe Date: Wed, 4 Oct 2017 01:58:32 +0530 Message-Id: <1507062512-9145-1-git-send-email-srishtishar@gmail.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Use list_for_each_entry_safe when the list elements may get deleted during traversal. Done using the following semantic patch by coccinelle. @r@ struct list_head* l; expression e; identifier m, list_del_init, f; type T1; T1* pos; iterator name list_for_each_entry_safe; @@ f(...){ +T1* tmp; ... -while(...) +list_for_each_entry_safe(pos,tmp,l,m) { ... -pos = container_of(l,T1,m); ... -l=e; <+... list_del_init(&pos->m) ...+> } ... } Signed-off-by: Srishti Sharma --- drivers/staging/rtl8188eu/core/rtw_ap.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/drivers/staging/rtl8188eu/core/rtw_ap.c b/drivers/staging/rtl8188eu/core/rtw_ap.c index 32a4837..a2c599f 100644 --- a/drivers/staging/rtl8188eu/core/rtw_ap.c +++ b/drivers/staging/rtl8188eu/core/rtw_ap.c @@ -1196,7 +1196,7 @@ int rtw_acl_add_sta(struct adapter *padapter, u8 *addr) int rtw_acl_remove_sta(struct adapter *padapter, u8 *addr) { struct list_head *plist, *phead; - struct rtw_wlan_acl_node *paclnode; + struct rtw_wlan_acl_node *paclnode, *tmp; struct sta_priv *pstapriv = &padapter->stapriv; struct wlan_acl_pool *pacl_list = &pstapriv->acl_list; struct __queue *pacl_node_q = &pacl_list->acl_node_q; @@ -1208,10 +1208,7 @@ int rtw_acl_remove_sta(struct adapter *padapter, u8 *addr) phead = get_list_head(pacl_node_q); plist = phead->next; - while (phead != plist) { - paclnode = container_of(plist, struct rtw_wlan_acl_node, list); - plist = plist->next; - + list_for_each_entry_safe(paclnode, tmp, plist, list) { if (!memcmp(paclnode->addr, addr, ETH_ALEN)) { if (paclnode->valid) { paclnode->valid = false; @@ -1711,7 +1708,7 @@ u8 ap_free_sta(struct adapter *padapter, struct sta_info *psta, int rtw_sta_flush(struct adapter *padapter) { struct list_head *phead, *plist; - struct sta_info *psta = NULL; + struct sta_info *psta = NULL, *tmp; struct sta_priv *pstapriv = &padapter->stapriv; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; @@ -1727,11 +1724,7 @@ int rtw_sta_flush(struct adapter *padapter) plist = phead->next; /* free sta asoc_queue */ - while (phead != plist) { - psta = container_of(plist, struct sta_info, asoc_list); - - plist = plist->next; - + list_for_each_entry_safe(psta, tmp, plist, asoc_list) { list_del_init(&psta->asoc_list); pstapriv->asoc_list_cnt--; @@ -1833,7 +1826,7 @@ void start_ap_mode(struct adapter *padapter) void stop_ap_mode(struct adapter *padapter) { struct list_head *phead, *plist; - struct rtw_wlan_acl_node *paclnode; + struct rtw_wlan_acl_node *paclnode, *tmp; struct sta_info *psta = NULL; struct sta_priv *pstapriv = &padapter->stapriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; @@ -1855,10 +1848,7 @@ void stop_ap_mode(struct adapter *padapter) spin_lock_bh(&pacl_node_q->lock); phead = get_list_head(pacl_node_q); plist = phead->next; - while (phead != plist) { - paclnode = container_of(plist, struct rtw_wlan_acl_node, list); - plist = plist->next; - + list_for_each_entry_safe(paclnode, tmp, plist, list) { if (paclnode->valid) { paclnode->valid = false; -- 2.7.4