diff options
Diffstat (limited to 'net/rds/connection.c')
-rw-r--r-- | net/rds/connection.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/rds/connection.c b/net/rds/connection.c index 7ee2d5d68b78..9efc82c665b5 100644 --- a/net/rds/connection.c +++ b/net/rds/connection.c | |||
@@ -366,6 +366,8 @@ void rds_conn_shutdown(struct rds_conn_path *cp) | |||
366 | * to the conn hash, so we never trigger a reconnect on this | 366 | * to the conn hash, so we never trigger a reconnect on this |
367 | * conn - the reconnect is always triggered by the active peer. */ | 367 | * conn - the reconnect is always triggered by the active peer. */ |
368 | cancel_delayed_work_sync(&cp->cp_conn_w); | 368 | cancel_delayed_work_sync(&cp->cp_conn_w); |
369 | if (conn->c_destroy_in_prog) | ||
370 | return; | ||
369 | rcu_read_lock(); | 371 | rcu_read_lock(); |
370 | if (!hlist_unhashed(&conn->c_hash_node)) { | 372 | if (!hlist_unhashed(&conn->c_hash_node)) { |
371 | rcu_read_unlock(); | 373 | rcu_read_unlock(); |
@@ -445,7 +447,6 @@ void rds_conn_destroy(struct rds_connection *conn) | |||
445 | */ | 447 | */ |
446 | rds_cong_remove_conn(conn); | 448 | rds_cong_remove_conn(conn); |
447 | 449 | ||
448 | put_net(conn->c_net); | ||
449 | kfree(conn->c_path); | 450 | kfree(conn->c_path); |
450 | kmem_cache_free(rds_conn_slab, conn); | 451 | kmem_cache_free(rds_conn_slab, conn); |
451 | 452 | ||