diff options
Diffstat (limited to 'sys-kernel/ck-sources/files/ck-sources-2.6.2.munmap.patch')
-rw-r--r-- | sys-kernel/ck-sources/files/ck-sources-2.6.2.munmap.patch | 53 |
1 files changed, 0 insertions, 53 deletions
diff --git a/sys-kernel/ck-sources/files/ck-sources-2.6.2.munmap.patch b/sys-kernel/ck-sources/files/ck-sources-2.6.2.munmap.patch deleted file mode 100644 index 47a199c870db..000000000000 --- a/sys-kernel/ck-sources/files/ck-sources-2.6.2.munmap.patch +++ /dev/null @@ -1,53 +0,0 @@ -diff -Naur 2.6.2/mm/mremap.c 2.6.3/mm/mremap.c ---- 2.6.2/mm/mremap.c 2004-02-18 03:29:48.000000000 +0100 -+++ 2.6.3/mm/mremap.c 2004-02-18 10:21:20.000000000 +0100 -@@ -135,15 +135,17 @@ - dst = alloc_one_pte_map(mm, new_addr); - if (src == NULL) - src = get_one_pte_map_nested(mm, old_addr); -- error = copy_one_pte(vma, old_addr, src, dst, &pte_chain); -- pte_unmap_nested(src); -- pte_unmap(dst); -- } else - /* -- * Why do we need this flush ? If there is no pte for -- * old_addr, then there must not be a pte for it as well. -+ * Since alloc_one_pte_map can drop and re-acquire -+ * page_table_lock, we should re-check the src entry... - */ -- flush_tlb_page(vma, old_addr); -+ if (src) { -+ error = copy_one_pte(vma, old_addr, src, -+ dst, &pte_chain); -+ pte_unmap_nested(src); -+ } -+ pte_unmap(dst); -+ } - spin_unlock(&mm->page_table_lock); - pte_chain_free(pte_chain); - out: -@@ -346,7 +348,9 @@ - if ((addr <= new_addr) && (addr+old_len) > new_addr) - goto out; - -- do_munmap(current->mm, new_addr, new_len); -+ ret = do_munmap(current->mm, new_addr, new_len); -+ if (ret) -+ goto out; - } - - /* -@@ -354,9 +358,11 @@ - * the unnecessary pages.. - * do_munmap does all the needed commit accounting - */ -- ret = addr; - if (old_len >= new_len) { -- do_munmap(current->mm, addr+new_len, old_len - new_len); -+ ret = do_munmap(current->mm, addr+new_len, old_len - new_len); -+ if (ret && old_len != new_len) -+ goto out; -+ ret = addr; - if (!(flags & MREMAP_FIXED) || (new_addr == addr)) - goto out; - old_len = new_len; |