diff options
author | Ursula Braun <ubraun@linux.ibm.com> | 2020-09-10 18:48:25 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-09-10 15:24:26 -0700 |
commit | 0c881ada3d1e7f5fd3d9099efca941ef0c6da363 (patch) | |
tree | 273e8a453ce159b2f78af9d33000c53895eeadb0 /net | |
parent | 7b2977d0830493452f1afaa8d8e1b4f8248df9d1 (diff) | |
download | linux-stable-0c881ada3d1e7f5fd3d9099efca941ef0c6da363.tar.gz linux-stable-0c881ada3d1e7f5fd3d9099efca941ef0c6da363.tar.bz2 linux-stable-0c881ada3d1e7f5fd3d9099efca941ef0c6da363.zip |
net/smc: reduce smc_listen_decline() calls
smc_listen_work() contains already an smc_listen_decline() exit.
Use this exit for smc_listen_rdma_finish() problems as well.
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')
-rw-r--r-- | net/smc/af_smc.c | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c index f27a596b2624..9f3e148c60c5 100644 --- a/net/smc/af_smc.c +++ b/net/smc/af_smc.c @@ -1233,27 +1233,17 @@ static int smc_listen_rdma_finish(struct smc_sock *new_smc, if (local_first) smc_link_save_peer_info(link, cclc); - if (smc_rmb_rtoken_handling(&new_smc->conn, link, cclc)) { - reason_code = SMC_CLC_DECL_ERR_RTOK; - goto decline; - } + if (smc_rmb_rtoken_handling(&new_smc->conn, link, cclc)) + return SMC_CLC_DECL_ERR_RTOK; if (local_first) { - if (smc_ib_ready_link(link)) { - reason_code = SMC_CLC_DECL_ERR_RDYLNK; - goto decline; - } + if (smc_ib_ready_link(link)) + return SMC_CLC_DECL_ERR_RDYLNK; /* QP confirmation over RoCE fabric */ smc_llc_flow_initiate(link->lgr, SMC_LLC_FLOW_ADD_LINK); reason_code = smcr_serv_conf_first_link(new_smc); smc_llc_flow_stop(link->lgr, &link->lgr->llc_flow_lcl); - if (reason_code) - goto decline; } - return 0; - -decline: - smc_listen_decline(new_smc, reason_code, local_first); return reason_code; } @@ -1382,9 +1372,9 @@ static void smc_listen_work(struct work_struct *work) if (!ism_supported) { rc = smc_listen_rdma_finish(new_smc, &cclc, ini.first_contact_local); - mutex_unlock(&smc_server_lgr_pending); if (rc) - return; + goto out_unlock; + mutex_unlock(&smc_server_lgr_pending); } smc_conn_save_peer_info(new_smc, &cclc); smc_listen_out_connected(new_smc); |