vserver 2.0-rc4
[linux-2.6.git] / fs / binfmt_flat.c
index c8113cc..42c958e 100644 (file)
 #include <linux/personality.h>
 #include <linux/init.h>
 #include <linux/flat.h>
+#include <linux/vs_memory.h>
 
 #include <asm/byteorder.h>
 #include <asm/system.h>
 #include <asm/uaccess.h>
-#include <asm/pgalloc.h>
 #include <asm/unaligned.h>
 #include <asm/cacheflush.h>
 
@@ -487,7 +487,7 @@ static int load_flat_file(struct linux_binprm * bprm,
         * size limits imposed on them by creating programs with large
         * arrays in the data or bss.
         */
-       rlim = current->rlim[RLIMIT_DATA].rlim_cur;
+       rlim = current->signal->rlim[RLIMIT_DATA].rlim_cur;
        if (rlim >= RLIM_INFINITY)
                rlim = ~0;
        if (data_len + bss_len > rlim)
@@ -651,7 +651,6 @@ static int load_flat_file(struct linux_binprm * bprm,
                current->mm->start_brk = datapos + data_len + bss_len;
                current->mm->brk = (current->mm->start_brk + 3) & ~3;
                current->mm->context.end_brk = memp + ksize((void *) memp) - stack_len;
-               // current->mm->rss = 0;
                vx_rsspages_sub(current->mm, current->mm->rss);
        }
 
@@ -724,7 +723,7 @@ static int load_flat_file(struct linux_binprm * bprm,
                                return -ENOEXEC;
 
                        /* Get the pointer's value.  */
-                       addr = flat_get_addr_from_rp(rp, relval);
+                       addr = flat_get_addr_from_rp(rp, relval, flags);
                        if (addr != 0) {
                                /*
                                 * Do the relocation.  PIC relocs in the data section are
@@ -897,7 +896,7 @@ static void __exit exit_flat_binfmt(void)
 
 /****************************************************************************/
 
-module_init(init_flat_binfmt);
+core_initcall(init_flat_binfmt);
 module_exit(exit_flat_binfmt);
 
 /****************************************************************************/