aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/dlm/lowcomms.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/fs/dlm/lowcomms.c b/fs/dlm/lowcomms.c
index 240cef14fe58..a3350e4c8184 100644
--- a/fs/dlm/lowcomms.c
+++ b/fs/dlm/lowcomms.c
@@ -316,6 +316,10 @@ int dlm_lowcomms_connect_node(int nodeid)
316{ 316{
317 struct connection *con; 317 struct connection *con;
318 318
319 /* with sctp there's no connecting without sending */
320 if (dlm_config.ci_protocol != 0)
321 return 0;
322
319 if (nodeid == dlm_our_nodeid()) 323 if (nodeid == dlm_our_nodeid())
320 return 0; 324 return 0;
321 325
@@ -855,11 +859,14 @@ static void sctp_init_assoc(struct connection *con)
855 outmessage.msg_flags = MSG_EOR; 859 outmessage.msg_flags = MSG_EOR;
856 860
857 spin_lock(&con->writequeue_lock); 861 spin_lock(&con->writequeue_lock);
858 e = list_entry(con->writequeue.next, struct writequeue_entry,
859 list);
860 862
861 BUG_ON((struct list_head *) e == &con->writequeue); 863 if (list_empty(&con->writequeue)) {
864 spin_unlock(&con->writequeue_lock);
865 log_print("writequeue empty for nodeid %d", con->nodeid);
866 return;
867 }
862 868
869 e = list_first_entry(&con->writequeue, struct writequeue_entry, list);
863 len = e->len; 870 len = e->len;
864 offset = e->offset; 871 offset = e->offset;
865 spin_unlock(&con->writequeue_lock); 872 spin_unlock(&con->writequeue_lock);