Messages in this thread Patch in this message | | | Date | Wed, 28 Feb 2007 09:42:27 +0530 | From | "Aneesh Kumar" <> | Subject | Re: [PATCH] init_new_context: Use the passed task argument |
| |
On 2/28/07, Andrew Morton <akpm@linux-foundation.org> wrote: > > On Fri, 23 Feb 2007 21:10:36 +0530 "Aneesh Kumar K.V" <aneesh.kumar@gmail.com> wrote: > > From: Aneesh Kumar K.V <aneesh.kumar@gmail.com> > > > > Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com> > > --- > > arch/i386/kernel/ldt.c | 2 +- > > arch/x86_64/kernel/ldt.c | 2 +- > > kernel/fork.c | 2 +- > > 3 files changed, 3 insertions(+), 3 deletions(-) > > > > diff --git a/arch/i386/kernel/ldt.c b/arch/i386/kernel/ldt.c > > index b410e5f..925354c 100644 > > --- a/arch/i386/kernel/ldt.c > > +++ b/arch/i386/kernel/ldt.c > > @@ -97,7 +97,7 @@ int init_new_context(struct task_struct *tsk, struct mm_struct *mm) > > > > init_MUTEX(&mm->context.sem); > > mm->context.size = 0; > > - old_mm = current->mm; > > + old_mm = tsk->mm; > > if (old_mm && old_mm->context.size > 0) { > > down(&old_mm->context.sem); > > retval = copy_ldt(&mm->context, &old_mm->context); > > diff --git a/arch/x86_64/kernel/ldt.c b/arch/x86_64/kernel/ldt.c > > index d7e5d0c..16ae79d 100644 > > --- a/arch/x86_64/kernel/ldt.c > > +++ b/arch/x86_64/kernel/ldt.c > > @@ -101,7 +101,7 @@ int init_new_context(struct task_struct *tsk, struct mm_struct *mm) > > > > init_MUTEX(&mm->context.sem); > > mm->context.size = 0; > > - old_mm = current->mm; > > + old_mm = tsk->mm; > > if (old_mm && old_mm->context.size > 0) { > > down(&old_mm->context.sem); > > retval = copy_ldt(&mm->context, &old_mm->context); > > diff --git a/kernel/fork.c b/kernel/fork.c > > index d154cc7..2423d83 100644 > > --- a/kernel/fork.c > > +++ b/kernel/fork.c > > @@ -496,7 +496,7 @@ static struct mm_struct *dup_mm(struct task_struct *tsk) > > if (!mm_init(mm)) > > goto fail_nomem; > > > > - if (init_new_context(tsk, mm)) > > + if (init_new_context(current, mm)) > > goto fail_nocontext; > > This last change makes the comment over dup_mm() wrong. It also generally > makes dup_mm() less useful, although that migt be OK. It also makes the > argument to dup_mm() unused and potentially removable. >
How about the change as below diff --git a/kernel/fork.c b/kernel/fork.c index 2423d83..2184ef5 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -477,7 +477,7 @@ void mm_release(struct task_struct *tsk, struct mm_struct *mm) */ static struct mm_struct *dup_mm(struct task_struct *tsk) { - struct mm_struct *mm, *oldmm = current->mm; + struct mm_struct *mm, *oldmm = tsk->mm; int err; if (!oldmm) @@ -496,7 +496,7 @@ static struct mm_struct *dup_mm(struct task_struct *tsk) if (!mm_init(mm)) goto fail_nomem; - if (init_new_context(current, mm)) + if (init_new_context(tsk, mm)) goto fail_nocontext; err = dup_mmap(mm, oldmm); @@ -551,7 +551,7 @@ static int copy_mm(unsigned long clone_flags, struct task_struct * tsk) } retval = -ENOMEM; - mm = dup_mm(tsk); + mm = dup_mm(current); if (!mm) goto fail_nomem; | |