Commit d0de32d9b71e11cc51618c2045086e9694093d01
Committed by
Linus Torvalds
1 parent
9e9bef07ce
Exists in
master
and in
20 other branches
[PATCH] mm: do_mremap current mm
Cleanup: relieve do_mremap from its surfeit of current->mms. Signed-off-by: Hugh Dickins <hugh@veritas.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Showing 1 changed file with 9 additions and 9 deletions Side-by-side Diff
mm/mremap.c
... | ... | @@ -245,6 +245,7 @@ |
245 | 245 | unsigned long old_len, unsigned long new_len, |
246 | 246 | unsigned long flags, unsigned long new_addr) |
247 | 247 | { |
248 | + struct mm_struct *mm = current->mm; | |
248 | 249 | struct vm_area_struct *vma; |
249 | 250 | unsigned long ret = -EINVAL; |
250 | 251 | unsigned long charged = 0; |
... | ... | @@ -285,7 +286,7 @@ |
285 | 286 | if ((addr <= new_addr) && (addr+old_len) > new_addr) |
286 | 287 | goto out; |
287 | 288 | |
288 | - ret = do_munmap(current->mm, new_addr, new_len); | |
289 | + ret = do_munmap(mm, new_addr, new_len); | |
289 | 290 | if (ret) |
290 | 291 | goto out; |
291 | 292 | } |
... | ... | @@ -296,7 +297,7 @@ |
296 | 297 | * do_munmap does all the needed commit accounting |
297 | 298 | */ |
298 | 299 | if (old_len >= new_len) { |
299 | - ret = do_munmap(current->mm, addr+new_len, old_len - new_len); | |
300 | + ret = do_munmap(mm, addr+new_len, old_len - new_len); | |
300 | 301 | if (ret && old_len != new_len) |
301 | 302 | goto out; |
302 | 303 | ret = addr; |
... | ... | @@ -309,7 +310,7 @@ |
309 | 310 | * Ok, we need to grow.. or relocate. |
310 | 311 | */ |
311 | 312 | ret = -EFAULT; |
312 | - vma = find_vma(current->mm, addr); | |
313 | + vma = find_vma(mm, addr); | |
313 | 314 | if (!vma || vma->vm_start > addr) |
314 | 315 | goto out; |
315 | 316 | if (is_vm_hugetlb_page(vma)) { |
316 | 317 | |
... | ... | @@ -325,14 +326,14 @@ |
325 | 326 | } |
326 | 327 | if (vma->vm_flags & VM_LOCKED) { |
327 | 328 | unsigned long locked, lock_limit; |
328 | - locked = current->mm->locked_vm << PAGE_SHIFT; | |
329 | + locked = mm->locked_vm << PAGE_SHIFT; | |
329 | 330 | lock_limit = current->signal->rlim[RLIMIT_MEMLOCK].rlim_cur; |
330 | 331 | locked += new_len - old_len; |
331 | 332 | ret = -EAGAIN; |
332 | 333 | if (locked > lock_limit && !capable(CAP_IPC_LOCK)) |
333 | 334 | goto out; |
334 | 335 | } |
335 | - if (!may_expand_vm(current->mm, (new_len - old_len) >> PAGE_SHIFT)) { | |
336 | + if (!may_expand_vm(mm, (new_len - old_len) >> PAGE_SHIFT)) { | |
336 | 337 | ret = -ENOMEM; |
337 | 338 | goto out; |
338 | 339 | } |
339 | 340 | |
... | ... | @@ -359,11 +360,10 @@ |
359 | 360 | vma_adjust(vma, vma->vm_start, |
360 | 361 | addr + new_len, vma->vm_pgoff, NULL); |
361 | 362 | |
362 | - current->mm->total_vm += pages; | |
363 | - vm_stat_account(vma->vm_mm, vma->vm_flags, | |
364 | - vma->vm_file, pages); | |
363 | + mm->total_vm += pages; | |
364 | + vm_stat_account(mm, vma->vm_flags, vma->vm_file, pages); | |
365 | 365 | if (vma->vm_flags & VM_LOCKED) { |
366 | - current->mm->locked_vm += pages; | |
366 | + mm->locked_vm += pages; | |
367 | 367 | make_pages_present(addr + old_len, |
368 | 368 | addr + new_len); |
369 | 369 | } |