|
@@ -1690,7 +1690,8 @@ static int rmap_walk_file(struct page *page, struct rmap_walk_control *rwc)
|
|
|
|
|
|
if (!mapping)
|
|
if (!mapping)
|
|
return ret;
|
|
return ret;
|
|
- i_mmap_lock_write(mapping);
|
|
|
|
|
|
+
|
|
|
|
+ i_mmap_lock_read(mapping);
|
|
vma_interval_tree_foreach(vma, &mapping->i_mmap, pgoff, pgoff) {
|
|
vma_interval_tree_foreach(vma, &mapping->i_mmap, pgoff, pgoff) {
|
|
unsigned long address = vma_address(page, vma);
|
|
unsigned long address = vma_address(page, vma);
|
|
|
|
|
|
@@ -1711,9 +1712,8 @@ static int rmap_walk_file(struct page *page, struct rmap_walk_control *rwc)
|
|
goto done;
|
|
goto done;
|
|
|
|
|
|
ret = rwc->file_nonlinear(page, mapping, rwc->arg);
|
|
ret = rwc->file_nonlinear(page, mapping, rwc->arg);
|
|
-
|
|
|
|
done:
|
|
done:
|
|
- i_mmap_unlock_write(mapping);
|
|
|
|
|
|
+ i_mmap_unlock_read(mapping);
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
|