diff options
author | Karsten Graul <kgraul@linux.ibm.com> | 2019-02-07 15:56:19 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-02-07 18:06:19 -0800 |
commit | 8fc002b01a4e3ecc223201c304e3f2217899aff6 (patch) | |
tree | 6ca7233a58e3af5bd8382184e2586d54886e054e | |
parent | 72a36a8aecb520f8af6529476dae16f7b6a3d87e (diff) |
net/smc: move code to clear the conn->lgr field
The lgr field of an smc_connection is set in smc_conn_create() and
should be cleared in smc_conn_free() for consistency reasons, so move
the responsible code.
Signed-off-by: Karsten Graul <kgraul@linux.ibm.com>
Signed-off-by: Ursula Braun <ubraun@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/smc/smc_core.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/net/smc/smc_core.c b/net/smc/smc_core.c index 35c1cdc93e1c..a1a6d351ae1b 100644 --- a/net/smc/smc_core.c +++ b/net/smc/smc_core.c @@ -118,7 +118,6 @@ static void __smc_lgr_unregister_conn(struct smc_connection *conn) rb_erase(&conn->alert_node, &lgr->conns_all); lgr->conns_num--; conn->alert_token_local = 0; - conn->lgr = NULL; sock_put(&smc->sk); /* sock_hold in smc_lgr_register_conn() */ } @@ -331,8 +330,9 @@ void smc_conn_free(struct smc_connection *conn) } else { smc_cdc_tx_dismiss_slots(conn); } - smc_lgr_unregister_conn(conn); /* unsets conn->lgr */ + smc_lgr_unregister_conn(conn); smc_buf_unuse(conn, lgr); /* allow buffer reuse */ + conn->lgr = NULL; if (!lgr->conns_num) smc_lgr_schedule_free_work(lgr); @@ -462,6 +462,7 @@ static void __smc_lgr_terminate(struct smc_link_group *lgr) sock_hold(&smc->sk); /* sock_put in close work */ conn->local_tx_ctrl.conn_state_flags.peer_conn_abort = 1; __smc_lgr_unregister_conn(conn); + conn->lgr = NULL; write_unlock_bh(&lgr->conns_lock); if (!schedule_work(&conn->close_work)) sock_put(&smc->sk); |