]> err.no Git - linux-2.6/blobdiff - fs/dlm/lowcomms.c
[GFS2] Fix up merge of Linus' kernel into GFS2
[linux-2.6] / fs / dlm / lowcomms.c
index 75010da95b39e332b88e467ccb69fcfc7392ae19..23f5ce12080b0e2f0d48b03ff844c78c5932113a 100644 (file)
@@ -934,11 +934,11 @@ static int send_to_sock(struct nodeinfo *ni)
                        break;
                e = list_entry(ni->writequeue.next, struct writequeue_entry,
                               list);
-               kmap(e->page);
                len = e->len;
                offset = e->offset;
                BUG_ON(len == 0 && e->users == 0);
                spin_unlock(&ni->writequeue_lock);
+               kmap(e->page);
 
                ret = 0;
                if (len) {
@@ -1190,10 +1190,6 @@ int dlm_lowcomms_start(void)
 {
        int error;
 
-       spin_lock_init(&write_nodes_lock);
-       INIT_LIST_HEAD(&write_nodes);
-       init_rwsem(&nodeinfo_lock);
-
        error = init_sock();
        if (error)
                goto fail_sock;
@@ -1224,6 +1220,9 @@ void dlm_lowcomms_stop(void)
 int dlm_lowcomms_init(void)
 {
        init_waitqueue_head(&lowcomms_recv_wait);
+       spin_lock_init(&write_nodes_lock);
+       INIT_LIST_HEAD(&write_nodes);
+       init_rwsem(&nodeinfo_lock);
        return 0;
 }