diff -NurpP linux-2.6.22.6-vs2.3.0.24.3/arch/arm/kernel/ecard.c linux-2.6.22.6-vs2.3.0.24.5/arch/arm/kernel/ecard.c --- linux-2.6.22.6-vs2.3.0.24.3/arch/arm/kernel/ecard.c 2007-07-09 13:17:32 +0200 +++ linux-2.6.22.6-vs2.3.0.24.5/arch/arm/kernel/ecard.c 2007-09-29 19:46:33 +0200 @@ -249,7 +249,7 @@ static void ecard_init_pgtables(struct m static int ecard_init_mm(void) { - struct mm_struct * mm = mm_alloc(); + struct mm_struct * mm = mm_alloc(current->vx_info); struct mm_struct *active_mm = current->active_mm; if (!mm) diff -NurpP linux-2.6.22.6-vs2.3.0.24.3/fs/compat.c linux-2.6.22.6-vs2.3.0.24.5/fs/compat.c --- linux-2.6.22.6-vs2.3.0.24.3/fs/compat.c 2007-07-09 13:19:23 +0200 +++ linux-2.6.22.6-vs2.3.0.24.5/fs/compat.c 2007-09-29 19:46:47 +0200 @@ -1381,7 +1381,7 @@ int compat_do_execve(char * filename, bprm->file = file; bprm->filename = filename; bprm->interp = filename; - bprm->mm = mm_alloc(); + bprm->mm = mm_alloc(current->vx_info); retval = -ENOMEM; if (!bprm->mm) goto out_file; diff -NurpP linux-2.6.22.6-vs2.3.0.24.3/fs/exec.c linux-2.6.22.6-vs2.3.0.24.5/fs/exec.c --- linux-2.6.22.6-vs2.3.0.24.3/fs/exec.c 2007-09-05 03:06:11 +0200 +++ linux-2.6.22.6-vs2.3.0.24.5/fs/exec.c 2007-09-29 19:45:56 +0200 @@ -1176,7 +1176,7 @@ int do_execve(char * filename, bprm->file = file; bprm->filename = filename; bprm->interp = filename; - bprm->mm = mm_alloc(); + bprm->mm = mm_alloc(current->vx_info); retval = -ENOMEM; if (!bprm->mm) goto out_file; diff -NurpP linux-2.6.22.6-vs2.3.0.24.3/include/linux/sched.h linux-2.6.22.6-vs2.3.0.24.5/include/linux/sched.h --- linux-2.6.22.6-vs2.3.0.24.3/include/linux/sched.h 2007-08-15 19:35:27 +0200 +++ linux-2.6.22.6-vs2.3.0.24.5/include/linux/sched.h 2007-09-29 19:46:18 +0200 @@ -1420,7 +1420,7 @@ static inline int sas_ss_flags(unsigned /* * Routines for handling mm_structs */ -extern struct mm_struct * mm_alloc(void); +extern struct mm_struct * mm_alloc(struct vx_info *); /* mmdrop drops the mm and the page tables */ extern void FASTCALL(__mmdrop(struct mm_struct *)); diff -NurpP linux-2.6.22.6-vs2.3.0.24.3/kernel/fork.c linux-2.6.22.6-vs2.3.0.24.5/kernel/fork.c --- linux-2.6.22.6-vs2.3.0.24.3/kernel/fork.c 2007-09-20 19:33:22 +0200 +++ linux-2.6.22.6-vs2.3.0.24.5/kernel/fork.c 2007-09-29 19:48:50 +0200 @@ -336,7 +336,7 @@ static inline void mm_free_pgd(struct mm #include -static struct mm_struct * mm_init(struct mm_struct * mm) +static struct mm_struct * mm_init(struct mm_struct * mm, struct vx_info *vxi) { atomic_set(&mm->mm_users, 1); atomic_set(&mm->mm_count, 1); @@ -354,7 +354,7 @@ static struct mm_struct * mm_init(struct if (likely(!mm_alloc_pgd(mm))) { mm->def_flags = 0; - set_vx_info(&mm->mm_vx_info, current->vx_info); + set_vx_info(&mm->mm_vx_info, vxi); return mm; } free_mm(mm); @@ -364,14 +364,14 @@ static struct mm_struct * mm_init(struct /* * Allocate and initialize an mm_struct. */ -struct mm_struct * mm_alloc(void) +struct mm_struct * mm_alloc(struct vx_info *vxi) { struct mm_struct * mm; mm = allocate_mm(); if (mm) { memset(mm, 0, sizeof(*mm)); - mm = mm_init(mm); + mm = mm_init(mm, vxi); } return mm; } @@ -507,7 +507,7 @@ static struct mm_struct *dup_mm(struct t mm->token_priority = 0; mm->last_interval = 0; - if (!mm_init(mm)) + if (!mm_init(mm, oldmm->mm_vx_info)) goto fail_nomem; if (init_new_context(tsk, mm))