ia32 emulation fixes for 2.5.45
I found that Linux 2.5.45 had some problems passing arguments to ia32 programs running on ia64 in emulation mode.
The attached patch fixes the problems.
-Arun
==File g:/t/ia32-static.patch===============
arch/ia64/ia32/binfmt_elf32.c renamed from arch/ia64/ia32/binfmt_elf32.c- +7 -0
@@ -162,9 +162,11 @@ {unsigned long stack_base;struct vm_area_struct *mpnt; +struct mm_struct *mm = current->mm;int i; stack_base =IA32_STACK_TOP -MAX_ARG_PAGES *PAGE_SIZE ; + mm->arg_start = bprm->p + stack_base; bprm->p += stack_base;if (bprm->loader)
@@ -175,6 +177,11 @@if (!mpnt)return -ENOMEM ; +if (!vm_enough_memory ((IA32_STACK_TOP - (PAGE_MASK & (unsigned long ) bprm->p))>>PAGE_SHIFT )) { +kmem_cache_free (vm_area_cachep, mpnt); +return -ENOMEM ; + } +down_write (¤t->mm->mmap_sem); { mpnt->vm_mm = current->mm;
==============================