mm/huge_memory.c: reduce critical section protected by split_queue_lock
[linux-2.6-microblaze.git] / mm / huge_memory.c
index 4439e91..5b28769 100644 (file)
@@ -2799,6 +2799,7 @@ int split_huge_page_to_list(struct page *page, struct list_head *list)
                        ds_queue->split_queue_len--;
                        list_del(page_deferred_list(head));
                }
+               spin_unlock(&ds_queue->split_queue_lock);
                if (mapping) {
                        if (PageSwapBacked(head))
                                __dec_node_page_state(head, NR_SHMEM_THPS);
@@ -2806,7 +2807,6 @@ int split_huge_page_to_list(struct page *page, struct list_head *list)
                                __dec_node_page_state(head, NR_FILE_THPS);
                }
 
-               spin_unlock(&ds_queue->split_queue_lock);
                __split_huge_page(page, list, end, flags);
                if (PageSwapCache(head)) {
                        swp_entry_t entry = { .val = page_private(head) };