net/smc: check connections in smc_lgr_free_work
authorKarsten Graul <kgraul@linux.ibm.com>
Tue, 12 Feb 2019 15:29:54 +0000 (16:29 +0100)
committerDavid S. Miller <davem@davemloft.net>
Tue, 12 Feb 2019 16:59:45 +0000 (11:59 -0500)
Remove the shortcut that smc_lgr_free() would skip the check for
existing connections when the link group is not in the link group list.

Signed-off-by: Karsten Graul <kgraul@linux.ibm.com>
Signed-off-by: Ursula Braun <ubraun@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/smc/smc_core.c

index 349d789..53a17cf 100644 (file)
@@ -160,8 +160,6 @@ static void smc_lgr_free_work(struct work_struct *work)
        bool conns;
 
        spin_lock_bh(&smc_lgr_list.lock);
-       if (list_empty(&lgr->list))
-               goto free;
        read_lock_bh(&lgr->conns_lock);
        conns = RB_EMPTY_ROOT(&lgr->conns_all);
        read_unlock_bh(&lgr->conns_lock);
@@ -169,8 +167,8 @@ static void smc_lgr_free_work(struct work_struct *work)
                spin_unlock_bh(&smc_lgr_list.lock);
                return;
        }
-       list_del_init(&lgr->list); /* remove from smc_lgr_list */
-free:
+       if (!list_empty(&lgr->list))
+               list_del_init(&lgr->list); /* remove from smc_lgr_list */
        spin_unlock_bh(&smc_lgr_list.lock);
 
        if (!lgr->is_smcd && !lgr->terminating) {