X-Git-Url: https://rtime.felk.cvut.cz/gitweb/zynq/linux.git/blobdiff_plain/b450e900fdb473a53613ad014f31eedbc80b1c90..aebcc440d27130c7bfb8868bc7246698e76d5f45:/mm/filemap.c diff --git a/mm/filemap.c b/mm/filemap.c index 50b52fe51937..f4f5e7e56ce0 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -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); } }