patch-2_6_7-vs1_9_1_12
[linux-2.6.git] / arch / x86_64 / ia32 / ia32_binfmt.c
index 1b70ef9..7ac15ab 100644 (file)
@@ -352,6 +352,8 @@ int setup_arg_pages(struct linux_binprm *bprm, int executable_stack)
                return -ENOMEM;
        }
 
+       memset(mpnt, 0, sizeof(*mpnt));
+
        down_write(&mm->mmap_sem);
        {
                mpnt->vm_mm = mm;
@@ -365,11 +367,6 @@ int setup_arg_pages(struct linux_binprm *bprm, int executable_stack)
                        mpnt->vm_flags = vm_stack_flags32;
                mpnt->vm_page_prot = (mpnt->vm_flags & VM_EXEC) ? 
                        PAGE_COPY_EXEC : PAGE_COPY;
-               mpnt->vm_ops = NULL;
-               mpnt->vm_pgoff = 0;
-               mpnt->vm_file = NULL;
-               INIT_LIST_HEAD(&mpnt->shared);
-               mpnt->vm_private_data = (void *) 0;
                insert_vm_struct(mm, mpnt);
                // mm->total_vm = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT;
                vx_vmpages_sub(mm, mm->total_vm -
@@ -380,7 +377,7 @@ int setup_arg_pages(struct linux_binprm *bprm, int executable_stack)
                struct page *page = bprm->page[i];
                if (page) {
                        bprm->page[i] = NULL;
-                       put_dirty_page(current,page,stack_base,mpnt->vm_page_prot);
+                       install_arg_page(mpnt, page, stack_base);
                }
                stack_base += PAGE_SIZE;
        }