aboutsummaryrefslogtreecommitdiff
path: root/net/smc/smc_ib.c
diff options
context:
space:
mode:
authorGravatar Ursula Braun <ubraun@linux.ibm.com> 2019-11-14 13:02:47 +0100
committerGravatar David S. Miller <davem@davemloft.net> 2019-11-15 12:28:28 -0800
commit0b29ec6436138721acf5844e558f7334a0fa61d5 (patch)
tree1b95d5509f485e0a076e9200e247265e33ba6add /net/smc/smc_ib.c
parentnet/smc: wait for tx completions before link freeing (diff)
downloadlinux-0b29ec6436138721acf5844e558f7334a0fa61d5.tar.gz
linux-0b29ec6436138721acf5844e558f7334a0fa61d5.tar.bz2
linux-0b29ec6436138721acf5844e558f7334a0fa61d5.zip
net/smc: immediate termination for SMCR link groups
If the SMC module is unloaded or an IB device is thrown away, the immediate link group freeing introduced for SMCD is exploited for SMCR as well. That means SMCR-specifics are added to smc_conn_kill(). Signed-off-by: Ursula Braun <ubraun@linux.ibm.com> Signed-off-by: Karsten Graul <kgraul@linux.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/smc/smc_ib.c')
-rw-r--r--net/smc/smc_ib.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/smc/smc_ib.c b/net/smc/smc_ib.c
index c15dcd08dc74..0ab122e66328 100644
--- a/net/smc/smc_ib.c
+++ b/net/smc/smc_ib.c
@@ -565,7 +565,7 @@ static void smc_ib_add_dev(struct ib_device *ibdev)
schedule_work(&smcibdev->port_event_work);
}
-/* callback function for ib_register_client() */
+/* callback function for ib_unregister_client() */
static void smc_ib_remove_dev(struct ib_device *ibdev, void *client_data)
{
struct smc_ib_device *smcibdev;
@@ -575,6 +575,7 @@ static void smc_ib_remove_dev(struct ib_device *ibdev, void *client_data)
spin_lock(&smc_ib_devices.lock);
list_del_init(&smcibdev->list); /* remove from smc_ib_devices */
spin_unlock(&smc_ib_devices.lock);
+ smc_smcr_terminate_all(smcibdev);
smc_ib_cleanup_per_ibdev(smcibdev);
ib_unregister_event_handler(&smcibdev->event_handler);
kfree(smcibdev);