]> rtime.felk.cvut.cz Git - zynq/linux.git/blobdiff - mm/filemap.c
Apply preempt_rt patch-4.9-rt1.patch.xz
[zynq/linux.git] / mm / filemap.c
index 50b52fe51937ca70e62a33ab1553aef9b77ad1a0..f4f5e7e56ce0595a6aa1c13db6e9a09fd30f822d 100644 (file)
@@ -159,9 +159,12 @@ static int page_cache_tree_insert(struct address_space *mapping,
                 * node->private_list is protected by
                 * mapping->tree_lock.
                 */
-               if (!list_empty(&node->private_list))
-                       list_lru_del(&workingset_shadow_nodes,
+               if (!list_empty(&node->private_list)) {
+                       local_lock(workingset_shadow_lock);
+                       list_lru_del(&__workingset_shadow_nodes,
                                     &node->private_list);
+                       local_unlock(workingset_shadow_lock);
+               }
        }
        return 0;
 }
@@ -217,8 +220,10 @@ static void page_cache_tree_delete(struct address_space *mapping,
                if (!dax_mapping(mapping) && !workingset_node_pages(node) &&
                                list_empty(&node->private_list)) {
                        node->private_data = mapping;
-                       list_lru_add(&workingset_shadow_nodes,
-                                       &node->private_list);
+                       local_lock(workingset_shadow_lock);
+                       list_lru_add(&__workingset_shadow_nodes,
+                                    &node->private_list);
+                       local_unlock(workingset_shadow_lock);
                }
        }