Skip to contentSkip to conversation

ia32 emulation fixes for 2.5.45

Linux-ia64 Arun Sharma 1 participant 1 message Nov 13, 2002 exec and binfmt

lore
Share & tools
lore
#0 lore raw

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(&current->mm->mmap_sem);
 	{
 		mpnt->vm_mm = current->mm;

==============================