Ok, found the silliness after a few hours of debugging. Can you try this
patch on top of 2.4.10pre2aa2? My alpha now runs solid again with it
applied.
--- 2.4.10pre2aa3/mm/mmap.c.~1~ Sat Sep 1 19:07:24 2001
+++ 2.4.10pre2aa3/mm/mmap.c Sat Sep 1 19:07:51 2001
@@ -360,7 +360,7 @@
spin_lock(lock);
prev->vm_end = end;
next = prev->vm_next;
- if (prev->vm_end == next->vm_start && can_vma_merge(next, vm_flags)) {
+ if (next && prev->vm_end == next->vm_start && can_vma_merge(next, vm_flags)) {
prev->vm_end = next->vm_end;
__vma_unlink(mm, next, prev);
spin_unlock(lock);
It was not triggering for all programs because to trigger you'd need an
mmap or sbrk that would close an hole in the address space, and only 1
vma after the hole.
It couldn't trigger on x86 because on x86 we always have the stack at
the end of the address space so vm_next was always non null in practice.
However it would been possible to write a malicious application to
exploit this bug on x86 too, it wasn't a bug specific to alpha.
It will be fixed in the next -aa as well of course. In the meantime keep
the above patch applied.
Andrea
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/