The optimized code is equivalent to the original process, and it releases the lock early. Signed-off-by: liqiang <liqiang64@xxxxxxxxxx> --- net/smc/af_smc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c index 9d76e902fd77..7fa80be1ea93 100644 --- a/net/smc/af_smc.c +++ b/net/smc/af_smc.c @@ -2526,9 +2526,9 @@ static void smc_listen_work(struct work_struct *work) if (!ini->is_smcd) { rc = smc_listen_rdma_finish(new_smc, cclc, ini->first_contact_local, ini); - if (rc) - goto out_unlock; mutex_unlock(&smc_server_lgr_pending); + if (rc) + goto out_decl; } smc_conn_save_peer_info(new_smc, cclc); -- 2.43.0