diff options
author | Ursula Braun <ubraun@linux.ibm.com> | 2019-11-14 13:02:47 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-11-15 12:28:28 -0800 |
commit | 0b29ec6436138721acf5844e558f7334a0fa61d5 (patch) | |
tree | 1b95d5509f485e0a076e9200e247265e33ba6add /net/smc/smc_ib.c | |
parent | 6a37ad3da5d64a632d03a8dc272c65e706cc7160 (diff) | |
download | linux-0b29ec6436138721acf5844e558f7334a0fa61d5.tar.bz2 |
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.c | 3 |
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); |