diff options
Diffstat (limited to 'sys-kernel/usermode-sources/files/usermode-sources-2.6.77666.patch')
-rw-r--r-- | sys-kernel/usermode-sources/files/usermode-sources-2.6.77666.patch | 170 |
1 files changed, 0 insertions, 170 deletions
diff --git a/sys-kernel/usermode-sources/files/usermode-sources-2.6.77666.patch b/sys-kernel/usermode-sources/files/usermode-sources-2.6.77666.patch deleted file mode 100644 index e0d393235123..000000000000 --- a/sys-kernel/usermode-sources/files/usermode-sources-2.6.77666.patch +++ /dev/null @@ -1,170 +0,0 @@ -diff -urNpX /usr/src/dontdiff linux-2.6.8.1-r9/mm/mmap.c linux-dsd/mm/mmap.c ---- linux-2.6.8.1-r9/mm/mmap.c 2005-03-16 14:56:52.000000000 +0000 -+++ linux-dsd/mm/mmap.c 2005-03-16 15:14:58.000000000 +0000 -@@ -1182,13 +1182,57 @@ out: - return prev ? prev->vm_next : vma; - } - -+/* -+ * Verify that the stack growth is acceptable and -+ * update accounting. This is shared with both the -+ * grow-up and grow-down cases. -+ */ -+static int acct_stack_growth(struct vm_area_struct * vma, unsigned long size, unsigned long grow) -+{ -+ struct mm_struct *mm = vma->vm_mm; -+ struct rlimit *rlim = current->rlim; -+ -+ /* address space limit tests */ -+ rlim = current->rlim; -+ if (mm->total_vm + grow > rlim[RLIMIT_AS].rlim_cur >> PAGE_SHIFT) -+ return -ENOMEM; -+ -+ /* Stack limit test */ -+ if (size > rlim[RLIMIT_STACK].rlim_cur) -+ return -ENOMEM; -+ -+ /* mlock limit tests */ -+ if (vma->vm_flags & VM_LOCKED) { -+ unsigned long locked; -+ unsigned long limit; -+ locked = mm->locked_vm + grow; -+ limit = rlim[RLIMIT_MEMLOCK].rlim_cur >> PAGE_SHIFT; -+ if (locked > limit && !capable(CAP_IPC_LOCK)) -+ return -ENOMEM; -+ } -+ -+ /* -+ * Overcommit.. This must be the final test, as it will -+ * update security statistics. -+ */ -+ if (security_vm_enough_memory(grow)) -+ return -ENOMEM; -+ -+ /* Ok, everything looks good - let it rip */ -+ mm->total_vm += grow; -+ if (vma->vm_flags & VM_LOCKED) -+ mm->locked_vm += grow; -+ __vm_stat_account(mm, vma->vm_flags, vma->vm_file, grow); -+ return 0; -+} -+ - #ifdef CONFIG_STACK_GROWSUP - /* - * vma is the first one with address > vma->vm_end. Have to extend vma. - */ - int expand_stack(struct vm_area_struct * vma, unsigned long address) - { -- unsigned long grow; -+ int error; - - if (!(vma->vm_flags & VM_GROWSUP)) - return -EFAULT; -@@ -1208,20 +1252,18 @@ int expand_stack(struct vm_area_struct * - */ - address += 4 + PAGE_SIZE - 1; - address &= PAGE_MASK; -- grow = (address - vma->vm_end) >> PAGE_SHIFT; -+ error = 0; - -- /* Overcommit.. */ -- if (security_vm_enough_memory(grow)) { -- anon_vma_unlock(vma); -- return -ENOMEM; -- } -- -- if (address - vma->vm_start > current->rlim[RLIMIT_STACK].rlim_cur || -- ((vma->vm_mm->total_vm + grow) << PAGE_SHIFT) > -- current->rlim[RLIMIT_AS].rlim_cur) { -- anon_vma_unlock(vma); -- vm_unacct_memory(grow); -- return -ENOMEM; -+ /* Somebody else might have raced and expanded it already */ -+ if (address > vma->vm_end) { -+ unsigned long size, grow; -+ -+ size = address - vma->vm_start; -+ grow = (address - vma->vm_end) >> PAGE_SHIFT; -+ -+ error = acct_stack_growth(vma, size, grow); -+ if (!error) -+ vma->vm_end = address; - } - if ((vma->vm_flags & VM_LOCKED) && !capable(CAP_IPC_LOCK) && - ((vma->vm_mm->locked_vm + grow) << PAGE_SHIFT) > -@@ -1230,12 +1272,12 @@ int expand_stack(struct vm_area_struct * - vm_unacct_memory(grow); - return -ENOMEM; - } -- vma->vm_end = address; -- vma->vm_mm->total_vm += grow; -- if (vma->vm_flags & VM_LOCKED) -- vma->vm_mm->locked_vm += grow; -+ -+ error = acct_stack_growth(vma, size, grow); -+ if (!error) -+ vma->vm_end = address; - anon_vma_unlock(vma); -- return 0; -+ return error; - } - - struct vm_area_struct * -@@ -1260,7 +1302,7 @@ find_extend_vma(struct mm_struct *mm, un - */ - int expand_stack(struct vm_area_struct *vma, unsigned long address) - { -- unsigned long grow; -+ int error; - - /* - * We must make sure the anon_vma is allocated -@@ -1276,20 +1318,20 @@ int expand_stack(struct vm_area_struct * - * anon_vma lock to serialize against concurrent expand_stacks. - */ - address &= PAGE_MASK; -- grow = (vma->vm_start - address) >> PAGE_SHIFT; -+ error = 0; - -- /* Overcommit.. */ -- if (security_vm_enough_memory(grow)) { -- anon_vma_unlock(vma); -- return -ENOMEM; -- } -- -- if (vma->vm_end - address > current->rlim[RLIMIT_STACK].rlim_cur || -- ((vma->vm_mm->total_vm + grow) << PAGE_SHIFT) > -- current->rlim[RLIMIT_AS].rlim_cur) { -- anon_vma_unlock(vma); -- vm_unacct_memory(grow); -- return -ENOMEM; -+ /* Somebody else might have raced and expanded it already */ -+ if (address < vma->vm_start) { -+ unsigned long size, grow; -+ -+ size = vma->vm_end - address; -+ grow = (vma->vm_start - address) >> PAGE_SHIFT; -+ -+ error = acct_stack_growth(vma, size, grow); -+ if (!error) { -+ vma->vm_start = address; -+ vma->vm_pgoff -= grow; -+ } - } - if ((vma->vm_flags & VM_LOCKED) && !capable(CAP_IPC_LOCK) && - ((vma->vm_mm->locked_vm + grow) << PAGE_SHIFT) > -@@ -1298,13 +1340,8 @@ int expand_stack(struct vm_area_struct * - vm_unacct_memory(grow); - return -ENOMEM; - } -- vma->vm_start = address; -- vma->vm_pgoff -= grow; -- vma->vm_mm->total_vm += grow; -- if (vma->vm_flags & VM_LOCKED) -- vma->vm_mm->locked_vm += grow; - anon_vma_unlock(vma); -- return 0; -+ return error; - } - - struct vm_area_struct * |