diff options
author | Patrick Caulfield <pcaulfie@redhat.com> | 2007-06-27 11:36:23 +0100 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2007-07-09 08:23:57 +0100 |
commit | 97d848365e603def43c69e160937f073bf9cf02e (patch) | |
tree | 04aecce7e6dfcccd6afaefce80abf6bf9f08126f /fs/dlm | |
parent | 1875f2f31b3955dff8c3712a56ae61836c8b90fe (diff) | |
download | linux-97d848365e603def43c69e160937f073bf9cf02e.tar.gz linux-97d848365e603def43c69e160937f073bf9cf02e.tar.bz2 linux-97d848365e603def43c69e160937f073bf9cf02e.zip |
[DLM] Telnet to port 21064 can stop all lockspaces
This patch fixes Red Hat bz#245892
Opening a tcp connection from a cluster member to another cluster member
targeting the dlm port it is enough to stop every dlm operation in the cluster.
This means that GFS and rgmanager will hang.
Signed-Off-By: Patrick Caulfield <pcaulfie@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/dlm')
-rw-r--r-- | fs/dlm/lowcomms.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/fs/dlm/lowcomms.c b/fs/dlm/lowcomms.c index fc0bff74c61e..73d44f57e24a 100644 --- a/fs/dlm/lowcomms.c +++ b/fs/dlm/lowcomms.c @@ -720,11 +720,17 @@ static int tcp_accept_from_sock(struct connection *con) INIT_WORK(&othercon->rwork, process_recv_sockets); set_bit(CF_IS_OTHERCON, &othercon->flags); newcon->othercon = othercon; + othercon->sock = newsock; + newsock->sk->sk_user_data = othercon; + add_sock(newsock, othercon); + addcon = othercon; + } + else { + printk("Extra connection from node %d attempted\n", nodeid); + result = -EAGAIN; + up_write(&newcon->sock_sem); + goto accept_err; } - othercon->sock = newsock; - newsock->sk->sk_user_data = othercon; - add_sock(newsock, othercon); - addcon = othercon; } else { newsock->sk->sk_user_data = newcon; |