Removing an ISM device prior to terminating its associated connections
doesn't end well.
Signed-off-by: Stefan Raspl <raspl@linux.ibm.com>
Signed-off-by: Jan Karcher <jaka@linux.ibm.com>
Signed-off-by: Wenjia Zhang <wenjia@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
 {
        pr_warn_ratelimited("smc: removing smcd device %s\n",
                            dev_name(&smcd->dev));
+       smcd->going_away = 1;
+       smc_smcd_terminate_all(smcd);
        mutex_lock(&smcd_dev_list.mutex);
        list_del_init(&smcd->list);
        mutex_unlock(&smcd_dev_list.mutex);
-       smcd->going_away = 1;
-       smc_smcd_terminate_all(smcd);
        destroy_workqueue(smcd->event_wq);
 
        device_del(&smcd->dev);