diff options
author | Chris Mason <chris.mason@oracle.com> | 2010-05-11 15:14:52 -0700 |
---|---|---|
committer | Andy Grover <andy.grover@oracle.com> | 2010-09-08 18:15:11 -0700 |
commit | abf454398c2ebafc629ebb8b149f5a752c79e919 (patch) | |
tree | 17c57ca613fc3d8a49f9dfc99bf2f9c3b7e3fc30 /net | |
parent | c9e65383a20d9a656db70efbf67e57f8115ad776 (diff) | |
download | linux-3.10-abf454398c2ebafc629ebb8b149f5a752c79e919.tar.gz linux-3.10-abf454398c2ebafc629ebb8b149f5a752c79e919.tar.bz2 linux-3.10-abf454398c2ebafc629ebb8b149f5a752c79e919.zip |
RDS: use locking on the connection hash list
rds_conn_destroy really needs locking while it changes the
connection hash.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'net')
-rw-r--r-- | net/rds/connection.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/net/rds/connection.c b/net/rds/connection.c index 9c249f394f2..87df15b9f8e 100644 --- a/net/rds/connection.c +++ b/net/rds/connection.c @@ -321,7 +321,10 @@ void rds_conn_destroy(struct rds_connection *conn) "%pI4\n", conn, &conn->c_laddr, &conn->c_faddr); + /* Ensure conn will not be scheduled for reconnect */ + spin_lock_irq(&rds_conn_lock); hlist_del_init(&conn->c_hash_node); + spin_unlock_irq(&rds_conn_lock); /* wait for the rds thread to shut it down */ atomic_set(&conn->c_state, RDS_CONN_ERROR); |