[fix] Re: 2.3.31 (and 2.3.32pre2) breaks cpp with segmentation fault (ok in 2.3.30), reproducable (m

Benjamin C.R. LaHaise (blah@kvack.org)
Tue, 14 Dec 1999 12:35:34 -0500 (EST)


On Tue, 14 Dec 1999, Thorsten Kranzkowski wrote:

> And for me it's not limited to gcc. 'top', 'iptraf', even 'ls' also segfaulted
> without any sane reason. :)

Here's the fix that works for a couple of other people who have triggered
the problem. I was being too clever, and it seems that in some cases even
though the new parameter is not touched, its presence is corrupting
*something*. If someone has an explanation, I'd be interested in hearing
it.

-ben

diff -ur clean/2.3.32/mm/mremap.c 2.3.32/mm/mremap.c
--- clean/2.3.32/mm/mremap.c Wed Dec 8 22:14:20 1999
+++ 2.3.32/mm/mremap.c Tue Dec 14 10:31:46 1999
@@ -166,7 +166,7 @@
* MREMAP_FIXED option added 5-Dec-1999 by Benjamin LaHaise
* This option implies MREMAP_MAYMOVE.
*/
-asmlinkage unsigned long sys_mremap(unsigned long addr,
+unsigned long do_sys_mremap(unsigned long addr,
unsigned long old_len, unsigned long new_len,
unsigned long flags, unsigned long new_addr)
{
@@ -286,3 +286,20 @@
up(&current->mm->mmap_sem);
return ret;
}
+
+asmlinkage unsigned long sys_mremap(unsigned long addr,
+ unsigned long old_len, unsigned long new_len,
+ unsigned long flags)
+{
+ if (flags & ~MREMAP_MAYMOVE)
+ printk("sys_mremap: passed invalid flags: %08lx\n", flags);
+ return do_sys_mremap(addr, old_len, new_len, flags, 0);
+}
+
+asmlinkage unsigned long do_sys_mremap2(unsigned long addr,
+ unsigned long old_len, unsigned long new_len,
+ unsigned long flags, unsigned long new_addr)
+{
+ return do_sys_mremap(addr, old_len, new_len, flags, new_addr);
+}
+

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/