|
|
vm_unacct_memory(grow); | vm_unacct_memory(grow); |
return -ENOMEM; | return -ENOMEM; |
} | } |
|
if ((vma->vm_flags & VM_LOCKED) && !capable(CAP_IPC_LOCK) && |
|
((vma->vm_mm->locked_vm + grow) << PAGE_SHIFT) > |
|
current->signal->rlim[RLIMIT_MEMLOCK].rlim_cur) { |
|
anon_vma_unlock(vma); |
|
vm_unacct_memory(grow); |
|
return -ENOMEM; |
|
} |
vma->vm_end = address; | vma->vm_end = address; |
vma->vm_mm->total_vm += grow; | vma->vm_mm->total_vm += grow; |
if (vma->vm_flags & VM_LOCKED) | if (vma->vm_flags & VM_LOCKED) |
|
|
vm_unacct_memory(grow); | vm_unacct_memory(grow); |
return -ENOMEM; | return -ENOMEM; |
} | } |
|
if ((vma->vm_flags & VM_LOCKED) && !capable(CAP_IPC_LOCK) && |
|
((vma->vm_mm->locked_vm + grow) << PAGE_SHIFT) > |
|
current->signal->rlim[RLIMIT_MEMLOCK].rlim_cur) { |
|
anon_vma_unlock(vma); |
|
vm_unacct_memory(grow); |
|
return -ENOMEM; |
|
} |
vma->vm_start = address; | vma->vm_start = address; |
vma->vm_pgoff -= grow; | vma->vm_pgoff -= grow; |
vma->vm_mm->total_vm += grow; | vma->vm_mm->total_vm += grow; |
|
|
down_write(¤t->mm->mmap_sem); | down_write(¤t->mm->mmap_sem); |
ret = __do_brk(addr, len); | ret = __do_brk(addr, len); |
up_write(¤t->mm->mmap_sem); | up_write(¤t->mm->mmap_sem); |
|
return ret; |
} | } |
| |
EXPORT_SYMBOL(do_brk); | EXPORT_SYMBOL(do_brk); |
|
|
void __user *oldval, size_t __user *oldlenp, | void __user *oldval, size_t __user *oldlenp, |
void __user *newval, size_t newlen, void **context) | void __user *newval, size_t newlen, void **context) |
{ | { |
int len; |
unsigned int len; |
| |
sysctl_poolsize = random_state->poolinfo.POOLBYTES; | sysctl_poolsize = random_state->poolinfo.POOLBYTES; |
| |