projects
/
deliverable
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
memcg: turn memcg_kmem_skip_account into a bit field
[deliverable/linux.git]
/
mm
/
mmap.c
diff --git
a/mm/mmap.c
b/mm/mmap.c
index b6c0a77fc1c8260c700fa001a5e2b912f4b80db5..0d84b2f86f3b8fb65f8bd9ff52dea247fe2f2781 100644
(file)
--- a/
mm/mmap.c
+++ b/
mm/mmap.c
@@
-232,7
+232,7
@@
error:
}
/*
}
/*
- * Requires inode->i_mapping->i_mmap_
mutex
+ * Requires inode->i_mapping->i_mmap_
rwsem
*/
static void __remove_shared_vm_struct(struct vm_area_struct *vma,
struct file *file, struct address_space *mapping)
*/
static void __remove_shared_vm_struct(struct vm_area_struct *vma,
struct file *file, struct address_space *mapping)
@@
-260,9
+260,9
@@
void unlink_file_vma(struct vm_area_struct *vma)
if (file) {
struct address_space *mapping = file->f_mapping;
if (file) {
struct address_space *mapping = file->f_mapping;
-
mutex_lock(&mapping->i_mmap_mutex
);
+
i_mmap_lock_write(mapping
);
__remove_shared_vm_struct(vma, file, mapping);
__remove_shared_vm_struct(vma, file, mapping);
-
mutex_unlock(&mapping->i_mmap_mutex
);
+
i_mmap_unlock_write(mapping
);
}
}
}
}
@@
-674,14
+674,14
@@
static void vma_link(struct mm_struct *mm, struct vm_area_struct *vma,
if (vma->vm_file) {
mapping = vma->vm_file->f_mapping;
if (vma->vm_file) {
mapping = vma->vm_file->f_mapping;
-
mutex_lock(&mapping->i_mmap_mutex
);
+
i_mmap_lock_write(mapping
);
}
__vma_link(mm, vma, prev, rb_link, rb_parent);
__vma_link_file(vma);
if (mapping)
}
__vma_link(mm, vma, prev, rb_link, rb_parent);
__vma_link_file(vma);
if (mapping)
-
mutex_unlock(&mapping->i_mmap_mutex
);
+
i_mmap_unlock_write(mapping
);
mm->map_count++;
validate_mm(mm);
mm->map_count++;
validate_mm(mm);
@@
-796,7
+796,7
@@
again: remove_next = 1 + (end > next->vm_end);
next->vm_end);
}
next->vm_end);
}
-
mutex_lock(&mapping->i_mmap_mutex
);
+
i_mmap_lock_write(mapping
);
if (insert) {
/*
* Put into interval tree now, so instantiated pages
if (insert) {
/*
* Put into interval tree now, so instantiated pages
@@
-883,7
+883,7
@@
again: remove_next = 1 + (end > next->vm_end);
anon_vma_unlock_write(anon_vma);
}
if (mapping)
anon_vma_unlock_write(anon_vma);
}
if (mapping)
-
mutex_unlock(&mapping->i_mmap_mutex
);
+
i_mmap_unlock_write(mapping
);
if (root) {
uprobe_mmap(vma);
if (root) {
uprobe_mmap(vma);
@@
-2791,7
+2791,7
@@
void exit_mmap(struct mm_struct *mm)
/* Insert vm structure into process list sorted by address
* and into the inode's i_mmap tree. If vm_file is non-NULL
/* Insert vm structure into process list sorted by address
* and into the inode's i_mmap tree. If vm_file is non-NULL
- * then i_mmap_
mutex
is taken here.
+ * then i_mmap_
rwsem
is taken here.
*/
int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
{
*/
int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
{
@@
-3086,7
+3086,7
@@
static void vm_lock_mapping(struct mm_struct *mm, struct address_space *mapping)
*/
if (test_and_set_bit(AS_MM_ALL_LOCKS, &mapping->flags))
BUG();
*/
if (test_and_set_bit(AS_MM_ALL_LOCKS, &mapping->flags))
BUG();
-
mutex_lock_nest_lock(&mapping->i_mmap_mutex
, &mm->mmap_sem);
+
down_write_nest_lock(&mapping->i_mmap_rwsem
, &mm->mmap_sem);
}
}
}
}
@@
-3113,7
+3113,7
@@
static void vm_lock_mapping(struct mm_struct *mm, struct address_space *mapping)
* vma in this mm is backed by the same anon_vma or address_space.
*
* We can take all the locks in random order because the VM code
* vma in this mm is backed by the same anon_vma or address_space.
*
* We can take all the locks in random order because the VM code
- * taking i_mmap_
mutex
or anon_vma->rwsem outside the mmap_sem never
+ * taking i_mmap_
rwsem
or anon_vma->rwsem outside the mmap_sem never
* takes more than one of them in a row. Secondly we're protected
* against a concurrent mm_take_all_locks() by the mm_all_locks_mutex.
*
* takes more than one of them in a row. Secondly we're protected
* against a concurrent mm_take_all_locks() by the mm_all_locks_mutex.
*
@@
-3182,7
+3182,7
@@
static void vm_unlock_mapping(struct address_space *mapping)
* AS_MM_ALL_LOCKS can't change to 0 from under us
* because we hold the mm_all_locks_mutex.
*/
* AS_MM_ALL_LOCKS can't change to 0 from under us
* because we hold the mm_all_locks_mutex.
*/
-
mutex_unlock(&mapping->i_mmap_mutex
);
+
i_mmap_unlock_write(mapping
);
if (!test_and_clear_bit(AS_MM_ALL_LOCKS,
&mapping->flags))
BUG();
if (!test_and_clear_bit(AS_MM_ALL_LOCKS,
&mapping->flags))
BUG();
This page took
0.029855 seconds
and
5
git commands to generate.