From 46ac74ee639f4eaa6af5b11f4bd646c73f02e18c Mon Sep 17 00:00:00 2001 From: Patrick Caulfield Date: Fri, 1 Jun 2007 10:07:26 -0500 Subject: [PATCH] --- yaml --- r: 58563 b: refs/heads/master c: afb853fb4eec380b492a3c369f837359359c28e8 h: refs/heads/master i: 58561: 5409808d604458ee78c52089a176cf66dcb52263 58559: 89c71c7708196029dfb53a4ad692c5a9b46d6a80 v: v3 --- [refs] | 2 +- trunk/fs/dlm/lowcomms.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index da60afd2acee..2bbe9000092b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 89918647a445fddfe223b097e29f775dcfa81eab +refs/heads/master: afb853fb4eec380b492a3c369f837359359c28e8 diff --git a/trunk/fs/dlm/lowcomms.c b/trunk/fs/dlm/lowcomms.c index 27970a58d29b..fc0bff74c61e 100644 --- a/trunk/fs/dlm/lowcomms.c +++ b/trunk/fs/dlm/lowcomms.c @@ -260,7 +260,7 @@ static int nodeid_to_addr(int nodeid, struct sockaddr *retaddr) static void lowcomms_data_ready(struct sock *sk, int count_unused) { struct connection *con = sock2con(sk); - if (!test_and_set_bit(CF_READ_PENDING, &con->flags)) + if (con && !test_and_set_bit(CF_READ_PENDING, &con->flags)) queue_work(recv_workqueue, &con->rwork); } @@ -268,7 +268,7 @@ static void lowcomms_write_space(struct sock *sk) { struct connection *con = sock2con(sk); - if (!test_and_set_bit(CF_WRITE_PENDING, &con->flags)) + if (con && !test_and_set_bit(CF_WRITE_PENDING, &con->flags)) queue_work(send_workqueue, &con->swork); } @@ -1400,8 +1400,11 @@ void dlm_lowcomms_stop(void) down(&connections_lock); for (i = 0; i <= max_nodeid; i++) { con = __nodeid2con(i, 0); - if (con) + if (con) { con->flags |= 0xFF; + if (con->sock) + con->sock->sk->sk_user_data = NULL; + } } up(&connections_lock);