.. | .. |
---|
57 | 57 | * If the interval [start,end) covers some unmapped address ranges, |
---|
58 | 58 | * just ignore them, but return -ENOMEM at the end. |
---|
59 | 59 | */ |
---|
60 | | - down_read(&mm->mmap_sem); |
---|
| 60 | + mmap_read_lock(mm); |
---|
61 | 61 | vma = find_vma(mm, start); |
---|
62 | 62 | for (;;) { |
---|
63 | 63 | struct file *file; |
---|
.. | .. |
---|
88 | 88 | if ((flags & MS_SYNC) && file && |
---|
89 | 89 | (vma->vm_flags & VM_SHARED)) { |
---|
90 | 90 | get_file(file); |
---|
91 | | - up_read(&mm->mmap_sem); |
---|
| 91 | + mmap_read_unlock(mm); |
---|
92 | 92 | error = vfs_fsync_range(file, fstart, fend, 1); |
---|
93 | 93 | fput(file); |
---|
94 | 94 | if (error || start >= end) |
---|
95 | 95 | goto out; |
---|
96 | | - down_read(&mm->mmap_sem); |
---|
| 96 | + mmap_read_lock(mm); |
---|
97 | 97 | vma = find_vma(mm, start); |
---|
98 | 98 | } else { |
---|
99 | 99 | if (start >= end) { |
---|
.. | .. |
---|
104 | 104 | } |
---|
105 | 105 | } |
---|
106 | 106 | out_unlock: |
---|
107 | | - up_read(&mm->mmap_sem); |
---|
| 107 | + mmap_read_unlock(mm); |
---|
108 | 108 | out: |
---|
109 | 109 | return error ? : unmapped_error; |
---|
110 | 110 | } |
---|