linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* Possible bug in do_execve()
@ 2006-06-20  2:25 Sonny Rao
  2006-06-21 18:41 ` Serge E. Hallyn
  0 siblings, 1 reply; 9+ messages in thread
From: Sonny Rao @ 2006-06-20  2:25 UTC (permalink / raw)
  To: linux-kernel, linux-mm; +Cc: anton

While doing some stress testing with a reduced number of MMU contexts,
I found that an error path in exec seemed to call destroy_context()
via mmdrop() immediately after init_new_context() failed.

specifically I got some warning from the idr code through powerpc
mmu_context code:

idr_remove called for id=0 which is not allocated.
Call Trace:
[C0000003C9E73820] [C00000000000E760] .show_stack+0x74/0x1b4 (unreliable)
[C0000003C9E738D0] [C000000000212F30] .idr_remove+0x1c4/0x274
[C0000003C9E73990] [C00000000002CA14] .destroy_context+0x2c/0x60
[C0000003C9E73A20] [C00000000004CDAC] .__mmdrop+0x50/0x80
[C0000003C9E73AB0] [C0000000000C9E38] .do_execve+0x218/0x290
[C0000003C9E73B60] [C00000000000F28C] .sys_execve+0x74/0xf8
[C0000003C9E73C00] [C00000000000871C] syscall_exit+0x0/0x40
--- Exception: c01 at .execve+0x8/0x14
    LR = .____call_usermodehelper+0xdc/0xf4
[C0000003C9E73EF0] [C000000000065388] .____call_usermodehelper+0xb0/0xf4 (unreliable)
[C0000003C9E73F90] [C000000000023928] .kernel_thread+0x4c/0x68


Here's the code in do_execve():

        retval = init_new_context(current, bprm->mm);
        if (retval < 0)
                goto out_mm

<snip>

out_mm:
        if (bprm->mm)
                mmdrop(bprm->mm);

mmdrop() then calls destroy_context().
There's a similar path in compat_do_execve().


Anton pointed out a comment in fork.c, which seems to inidcate
incorrect behavior in the exec code. 

>From dup_mm() in fork.c:

      if (init_new_context(tsk, mm))
                goto fail_nocontext;

<snip>

fail_nocontext:
        /*                                                              
         * If init_new_context() failed, we cannot use mmput() to free the mm
         * because it calls destroy_context()
         */
        mm_free_pgd(mm);
        free_mm(mm);
        return NULL;



Is the behavior in do_execve() correct?

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Possible bug in do_execve()
  2006-06-20  2:25 Possible bug in do_execve() Sonny Rao
@ 2006-06-21 18:41 ` Serge E. Hallyn
  2006-06-21 18:55   ` Sonny Rao
  0 siblings, 1 reply; 9+ messages in thread
From: Serge E. Hallyn @ 2006-06-21 18:41 UTC (permalink / raw)
  To: Sonny Rao; +Cc: linux-kernel, linux-mm, anton

Quoting Sonny Rao (sonny@burdell.org):
> While doing some stress testing with a reduced number of MMU contexts,
> I found that an error path in exec seemed to call destroy_context()
> via mmdrop() immediately after init_new_context() failed.
> 
> specifically I got some warning from the idr code through powerpc
> mmu_context code:
> 
> idr_remove called for id=0 which is not allocated.
> Call Trace:
> [C0000003C9E73820] [C00000000000E760] .show_stack+0x74/0x1b4 (unreliable)
> [C0000003C9E738D0] [C000000000212F30] .idr_remove+0x1c4/0x274
> [C0000003C9E73990] [C00000000002CA14] .destroy_context+0x2c/0x60
> [C0000003C9E73A20] [C00000000004CDAC] .__mmdrop+0x50/0x80
> [C0000003C9E73AB0] [C0000000000C9E38] .do_execve+0x218/0x290
> [C0000003C9E73B60] [C00000000000F28C] .sys_execve+0x74/0xf8
> [C0000003C9E73C00] [C00000000000871C] syscall_exit+0x0/0x40
> --- Exception: c01 at .execve+0x8/0x14
>     LR = .____call_usermodehelper+0xdc/0xf4
> [C0000003C9E73EF0] [C000000000065388] .____call_usermodehelper+0xb0/0xf4 (unreliable)
> [C0000003C9E73F90] [C000000000023928] .kernel_thread+0x4c/0x68
> 
> 
> Here's the code in do_execve():
> 
>         retval = init_new_context(current, bprm->mm);
>         if (retval < 0)
>                 goto out_mm
> 
> <snip>
> 
> out_mm:
>         if (bprm->mm)
>                 mmdrop(bprm->mm);
> 
> mmdrop() then calls destroy_context().
> There's a similar path in compat_do_execve().
> 
> 
> Anton pointed out a comment in fork.c, which seems to inidcate
> incorrect behavior in the exec code. 
> 
> >From dup_mm() in fork.c:
> 
>       if (init_new_context(tsk, mm))
>                 goto fail_nocontext;
> 
> <snip>
> 
> fail_nocontext:
>         /*                                                              
>          * If init_new_context() failed, we cannot use mmput() to free the mm
>          * because it calls destroy_context()
>          */
>         mm_free_pgd(mm);
>         free_mm(mm);
>         return NULL;
> 
> 
> 
> Is the behavior in do_execve() correct?

Well, I assume the intent is for out_mm: to clean up from mm_alloc(),
not from 'init_new_context'.  So I think that code is correct.
This bug appears to be powerpc-specific, so would the following patch
be reasonable?

Note it is entirely untested, just to show where i think this should
be solved.  But I could try compile+boot test tonight.

thanks,
-serge

From: Serge E. Hallyn <hallyn@sergelap.(none)>
Date: Wed, 21 Jun 2006 13:37:27 -0500
Subject: [PATCH] powerpc: check for proper mm->context before destroying

arch/powerpc/mm/mmu_context_64.c:destroy_context() can be called
from __mmput() in do_execve() if init_new_context() failed.  This
can result in idr_remove() being called for an invalid context.

So, don't call idr_remove if there is no context.

Signed-off-by: Serge E. Hallyn <serue@us.ibm.com>

---

 arch/powerpc/mm/mmu_context_64.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

ee74da9d3c122b92541dd6b7670731bd4a033f04
diff --git a/arch/powerpc/mm/mmu_context_64.c b/arch/powerpc/mm/mmu_context_64.c
index 714a84d..552d590 100644
--- a/arch/powerpc/mm/mmu_context_64.c
+++ b/arch/powerpc/mm/mmu_context_64.c
@@ -55,6 +55,9 @@ again:
 
 void destroy_context(struct mm_struct *mm)
 {
+	if (mm->context.id == NO_CONTEXT)
+		return;
+
 	spin_lock(&mmu_context_lock);
 	idr_remove(&mmu_context_idr, mm->context.id);
 	spin_unlock(&mmu_context_lock);
-- 
1.3.3

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Possible bug in do_execve()
  2006-06-21 18:41 ` Serge E. Hallyn
@ 2006-06-21 18:55   ` Sonny Rao
  2006-06-21 19:09     ` Serge E. Hallyn
  0 siblings, 1 reply; 9+ messages in thread
From: Sonny Rao @ 2006-06-21 18:55 UTC (permalink / raw)
  To: Serge E. Hallyn; +Cc: linux-kernel, linux-mm, anton

On Wed, Jun 21, 2006 at 01:41:29PM -0500, Serge E. Hallyn wrote:
<snip>
> > Is the behavior in do_execve() correct?
> 
> Well, I assume the intent is for out_mm: to clean up from mm_alloc(),
> not from 'init_new_context'.  So I think that code is correct.
> This bug appears to be powerpc-specific, so would the following patch
> be reasonable?
> 
> Note it is entirely untested, just to show where i think this should
> be solved.  But I could try compile+boot test tonight.
> 
> thanks,
> -serge
> 
> From: Serge E. Hallyn <hallyn@sergelap.(none)>
> Date: Wed, 21 Jun 2006 13:37:27 -0500
> Subject: [PATCH] powerpc: check for proper mm->context before destroying
> 
> arch/powerpc/mm/mmu_context_64.c:destroy_context() can be called
> from __mmput() in do_execve() if init_new_context() failed.  This
> can result in idr_remove() being called for an invalid context.
> 
> So, don't call idr_remove if there is no context.
> 
> Signed-off-by: Serge E. Hallyn <serue@us.ibm.com>
> 
> ---
> 
>  arch/powerpc/mm/mmu_context_64.c |    3 +++
>  1 files changed, 3 insertions(+), 0 deletions(-)
> 
> ee74da9d3c122b92541dd6b7670731bd4a033f04
> diff --git a/arch/powerpc/mm/mmu_context_64.c b/arch/powerpc/mm/mmu_context_64.c
> index 714a84d..552d590 100644
> --- a/arch/powerpc/mm/mmu_context_64.c
> +++ b/arch/powerpc/mm/mmu_context_64.c
> @@ -55,6 +55,9 @@ again:
>  
>  void destroy_context(struct mm_struct *mm)
>  {
> +	if (mm->context.id == NO_CONTEXT)
> +		return;
> +
>  	spin_lock(&mmu_context_lock);
>  	idr_remove(&mmu_context_idr, mm->context.id);
>  	spin_unlock(&mmu_context_lock);

Yeah, I proposed a similar patch to Anton, and it would quiet the
warning on powerpc, but that's not the point.  It happens that powerpc
doesn't use 0 as a context id, but that may not be true on another
architecture.  That's really what I'm concerned about.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Possible bug in do_execve()
  2006-06-21 18:55   ` Sonny Rao
@ 2006-06-21 19:09     ` Serge E. Hallyn
  2006-06-21 19:27       ` Sonny Rao
  0 siblings, 1 reply; 9+ messages in thread
From: Serge E. Hallyn @ 2006-06-21 19:09 UTC (permalink / raw)
  To: Sonny Rao; +Cc: Serge E. Hallyn, linux-kernel, linux-mm, anton

Quoting Sonny Rao (sonny@burdell.org):
> On Wed, Jun 21, 2006 at 01:41:29PM -0500, Serge E. Hallyn wrote:
> <snip>
> > > Is the behavior in do_execve() correct?
> > 
> > Well, I assume the intent is for out_mm: to clean up from mm_alloc(),
> > not from 'init_new_context'.  So I think that code is correct.
> > This bug appears to be powerpc-specific, so would the following patch
> > be reasonable?
> > 
> > Note it is entirely untested, just to show where i think this should
> > be solved.  But I could try compile+boot test tonight.
> > 
> > thanks,
> > -serge
> > 
> > From: Serge E. Hallyn <hallyn@sergelap.(none)>
> > Date: Wed, 21 Jun 2006 13:37:27 -0500
> > Subject: [PATCH] powerpc: check for proper mm->context before destroying
> > 
> > arch/powerpc/mm/mmu_context_64.c:destroy_context() can be called
> > from __mmput() in do_execve() if init_new_context() failed.  This
> > can result in idr_remove() being called for an invalid context.
> > 
> > So, don't call idr_remove if there is no context.
> > 
> > Signed-off-by: Serge E. Hallyn <serue@us.ibm.com>
> > 
> > ---
> > 
> >  arch/powerpc/mm/mmu_context_64.c |    3 +++
> >  1 files changed, 3 insertions(+), 0 deletions(-)
> > 
> > ee74da9d3c122b92541dd6b7670731bd4a033f04
> > diff --git a/arch/powerpc/mm/mmu_context_64.c b/arch/powerpc/mm/mmu_context_64.c
> > index 714a84d..552d590 100644
> > --- a/arch/powerpc/mm/mmu_context_64.c
> > +++ b/arch/powerpc/mm/mmu_context_64.c
> > @@ -55,6 +55,9 @@ again:
> >  
> >  void destroy_context(struct mm_struct *mm)
> >  {
> > +	if (mm->context.id == NO_CONTEXT)
> > +		return;
> > +
> >  	spin_lock(&mmu_context_lock);
> >  	idr_remove(&mmu_context_idr, mm->context.id);
> >  	spin_unlock(&mmu_context_lock);
> 
> Yeah, I proposed a similar patch to Anton, and it would quiet the
> warning on powerpc, but that's not the point.  It happens that powerpc
> doesn't use 0 as a context id, but that may not be true on another
> architecture.  That's really what I'm concerned about.

FWIW, ppc and cris do the NO_CONTEXT check, while others don't
even have a arch-specific 'mm->context.id'.

-serge

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Possible bug in do_execve()
  2006-06-21 19:09     ` Serge E. Hallyn
@ 2006-06-21 19:27       ` Sonny Rao
  2006-06-21 19:42         ` Serge E. Hallyn
  0 siblings, 1 reply; 9+ messages in thread
From: Sonny Rao @ 2006-06-21 19:27 UTC (permalink / raw)
  To: Serge E. Hallyn; +Cc: linux-kernel, linux-mm, anton

On Wed, Jun 21, 2006 at 02:09:10PM -0500, Serge E. Hallyn wrote:
<snip>
> > Yeah, I proposed a similar patch to Anton, and it would quiet the
> > warning on powerpc, but that's not the point.  It happens that powerpc
> > doesn't use 0 as a context id, but that may not be true on another
> > architecture.  That's really what I'm concerned about.
> 
> FWIW, ppc and cris do the NO_CONTEXT check, while others don't
> even have a arch-specific 'mm->context.id'.

Good point.  I probably stated that concern too narrowly.  Probably
what I should say is: What is the pre-condition for calling
destroy_context() ?  Is it that init_new_context() must have
succeeded?  Or is it merely that mm.context has been zeroed
out?

Here's destroy context on sparc64:

void destroy_context(struct mm_struct *mm)
{
        unsigned long flags, i;

        for (i = 0; i < MM_NUM_TSBS; i++)
                tsb_destroy_one(&mm->context.tsb_block[i]);

        spin_lock_irqsave(&ctx_alloc_lock, flags);

        if (CTX_VALID(mm->context)) {
                unsigned long nr = CTX_NRBITS(mm->context);
                mmu_context_bmap[nr>>6] &= ~(1UL << (nr & 63));
        }

        spin_unlock_irqrestore(&ctx_alloc_lock, flags);
}

It seems to assume that mm->context is valid before doing a check.

Since I don't have a sparc64 box, I can't check to see if this
actually breaks things or not.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Possible bug in do_execve()
  2006-06-21 19:27       ` Sonny Rao
@ 2006-06-21 19:42         ` Serge E. Hallyn
  2006-06-21 20:12           ` Sonny Rao
  0 siblings, 1 reply; 9+ messages in thread
From: Serge E. Hallyn @ 2006-06-21 19:42 UTC (permalink / raw)
  To: Sonny Rao; +Cc: Serge E. Hallyn, linux-kernel, linux-mm, anton

Quoting Sonny Rao (sonny@burdell.org):
> On Wed, Jun 21, 2006 at 02:09:10PM -0500, Serge E. Hallyn wrote:
> <snip>
> > > Yeah, I proposed a similar patch to Anton, and it would quiet the
> > > warning on powerpc, but that's not the point.  It happens that powerpc
> > > doesn't use 0 as a context id, but that may not be true on another
> > > architecture.  That's really what I'm concerned about.
> > 
> > FWIW, ppc and cris do the NO_CONTEXT check, while others don't
> > even have a arch-specific 'mm->context.id'.
> 
> Good point.  I probably stated that concern too narrowly.  Probably
> what I should say is: What is the pre-condition for calling
> destroy_context() ?  Is it that init_new_context() must have
> succeeded?  Or is it merely that mm.context has been zeroed
> out?

Right, that may be the right question.  If that's the case, then the
problem is really include/linux/sched.h:__mmdrop() which is what's
calling destroy_context().  Separating that out becomes a pretty
big patch affecting at least all mmput() and mmdrop() callers.

> Here's destroy context on sparc64:
> 
> void destroy_context(struct mm_struct *mm)
> {
>         unsigned long flags, i;
> 
>         for (i = 0; i < MM_NUM_TSBS; i++)
>                 tsb_destroy_one(&mm->context.tsb_block[i]);
> 
>         spin_lock_irqsave(&ctx_alloc_lock, flags);
> 
>         if (CTX_VALID(mm->context)) {
>                 unsigned long nr = CTX_NRBITS(mm->context);
>                 mmu_context_bmap[nr>>6] &= ~(1UL << (nr & 63));
>         }
> 
>         spin_unlock_irqrestore(&ctx_alloc_lock, flags);
> }
> 
> It seems to assume that mm->context is valid before doing a check.
> 
> Since I don't have a sparc64 box, I can't check to see if this
> actually breaks things or not.

So we can either go through all arch's and make sure destroy_context is
safe for invalid context, or split mmput() and destroy_context()...

The former seems easier, but the latter seems more robust in the face of
future code changes I guess.

-serge

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Possible bug in do_execve()
  2006-06-21 19:42         ` Serge E. Hallyn
@ 2006-06-21 20:12           ` Sonny Rao
  2006-06-22 11:59             ` Serge E. Hallyn
  0 siblings, 1 reply; 9+ messages in thread
From: Sonny Rao @ 2006-06-21 20:12 UTC (permalink / raw)
  To: Serge E. Hallyn; +Cc: linux-kernel, linux-mm, anton

On Wed, Jun 21, 2006 at 02:42:50PM -0500, Serge E. Hallyn wrote:
> Quoting Sonny Rao (sonny@burdell.org):
> > On Wed, Jun 21, 2006 at 02:09:10PM -0500, Serge E. Hallyn wrote:
> > <snip>
> > > > Yeah, I proposed a similar patch to Anton, and it would quiet the
> > > > warning on powerpc, but that's not the point.  It happens that powerpc
> > > > doesn't use 0 as a context id, but that may not be true on another
> > > > architecture.  That's really what I'm concerned about.
> > > 
> > > FWIW, ppc and cris do the NO_CONTEXT check, while others don't
> > > even have a arch-specific 'mm->context.id'.
> > 
> > Good point.  I probably stated that concern too narrowly.  Probably
> > what I should say is: What is the pre-condition for calling
> > destroy_context() ?  Is it that init_new_context() must have
> > succeeded?  Or is it merely that mm.context has been zeroed
> > out?
> 
> Right, that may be the right question.  If that's the case, then the
> problem is really include/linux/sched.h:__mmdrop() which is what's
> calling destroy_context().  Separating that out becomes a pretty
> big patch affecting at least all mmput() and mmdrop() callers.

So mmdrop() inlines to an atomic_dec_and_test on mm_count and a call
to __mmdrop which makes three calls : mm_free_pgd(), destroy_context(),
and free_mm().  I _think_ that in this case __mmdrop() will always get
called.

We know that the destroy_context() is unnecessary, but mm_free_pgd()
and free_mm() are necessary.

I was thinking we _could_ open code these calls in exec.c but that seems
like a "Really Bad Idea" w.r.t abstraction/maintenance etc,
and the alternative is to make another function/macro just for this
special case, which also seems like a poor choice.

> > It seems to assume that mm->context is valid before doing a check.
> > 
> > Since I don't have a sparc64 box, I can't check to see if this
> > actually breaks things or not.
> 
> So we can either go through all arch's and make sure destroy_context is
> safe for invalid context, or split mmput() and destroy_context()...
> 
> The former seems easier, but the latter seems more robust in the face of
> future code changes I guess.

Yes, the former does seem easier, and perhaps easiest is to do that
and document what the pre-conditions are so future developers at least
have a clue.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Possible bug in do_execve()
  2006-06-21 20:12           ` Sonny Rao
@ 2006-06-22 11:59             ` Serge E. Hallyn
  2006-06-22 20:03               ` Sonny Rao
  0 siblings, 1 reply; 9+ messages in thread
From: Serge E. Hallyn @ 2006-06-22 11:59 UTC (permalink / raw)
  To: Sonny Rao; +Cc: Serge E. Hallyn, linux-kernel, linux-mm, anton

Quoting Sonny Rao (sonny@burdell.org):
> > > It seems to assume that mm->context is valid before doing a check.
> > > 
> > > Since I don't have a sparc64 box, I can't check to see if this
> > > actually breaks things or not.
> > 
> > So we can either go through all arch's and make sure destroy_context is
> > safe for invalid context, or split mmput() and destroy_context()...
> > 
> > The former seems easier, but the latter seems more robust in the face of
> > future code changes I guess.
> 
> Yes, the former does seem easier, and perhaps easiest is to do that
> and document what the pre-conditions are so future developers at least
> have a clue.

Hmm, but document it where, since there is no single destroy_context()
definition?  At the mmput() and __mmdrop() definitions in kernel/fork.c?

(like so: ?)

-serge

From: Serge E. Hallyn <hallyn@sergelap.(none)>
Date: Wed, 21 Jun 2006 13:37:27 -0500
Subject: [PATCH] powerpc: check for proper mm->context before destroying

arch/powerpc/mm/mmu_context_64.c:destroy_context() can be called
from __mmput() in do_execve() if init_new_context() failed.  This
can result in idr_remove() being called for an invalid context.

So, don't call idr_remove if there is no context.

Signed-off-by: Serge E. Hallyn <serue@us.ibm.com>

---

 arch/powerpc/mm/mmu_context_64.c |    3 +++
 kernel/fork.c                    |    4 ++++
 2 files changed, 7 insertions(+), 0 deletions(-)

d4fdebfda2170615db87f5aaf45b8478e223824a
diff --git a/arch/powerpc/mm/mmu_context_64.c b/arch/powerpc/mm/mmu_context_64.c
index 714a84d..552d590 100644
--- a/arch/powerpc/mm/mmu_context_64.c
+++ b/arch/powerpc/mm/mmu_context_64.c
@@ -55,6 +55,9 @@ again:
 
 void destroy_context(struct mm_struct *mm)
 {
+	if (mm->context.id == NO_CONTEXT)
+		return;
+
 	spin_lock(&mmu_context_lock);
 	idr_remove(&mmu_context_idr, mm->context.id);
 	spin_unlock(&mmu_context_lock);
diff --git a/kernel/fork.c b/kernel/fork.c
index ac8100e..0fe51aa 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -354,6 +354,10 @@ struct mm_struct * mm_alloc(void)
  * Called when the last reference to the mm
  * is dropped: either by a lazy thread or by
  * mmput. Free the page directory and the mm.
+ *
+ * Arch-specific destroy_context() implementations
+ * should be aware that this can be called when
+ * the mm->context initialization has failed.
  */
 void fastcall __mmdrop(struct mm_struct *mm)
 {
-- 
1.3.3

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Possible bug in do_execve()
  2006-06-22 11:59             ` Serge E. Hallyn
@ 2006-06-22 20:03               ` Sonny Rao
  0 siblings, 0 replies; 9+ messages in thread
From: Sonny Rao @ 2006-06-22 20:03 UTC (permalink / raw)
  To: Serge E. Hallyn; +Cc: linux-kernel, linux-mm, anton

On Thu, Jun 22, 2006 at 06:59:07AM -0500, Serge E. Hallyn wrote:
> Quoting Sonny Rao (sonny@burdell.org):
> > > > It seems to assume that mm->context is valid before doing a check.
> > > > 
> > > > Since I don't have a sparc64 box, I can't check to see if this
> > > > actually breaks things or not.
> > > 
> > > So we can either go through all arch's and make sure destroy_context is
> > > safe for invalid context, or split mmput() and destroy_context()...
> > > 
> > > The former seems easier, but the latter seems more robust in the face of
> > > future code changes I guess.
> > 
> > Yes, the former does seem easier, and perhaps easiest is to do that
> > and document what the pre-conditions are so future developers at least
> > have a clue.
> 
> Hmm, but document it where, since there is no single destroy_context()
> definition?  At the mmput() and __mmdrop() definitions in kernel/fork.c?
> 
That seems reasonable to me.  

I was hoping some of the arch maintainers might chime in with their
insight on the issue.  

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2006-06-22 20:03 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-06-20  2:25 Possible bug in do_execve() Sonny Rao
2006-06-21 18:41 ` Serge E. Hallyn
2006-06-21 18:55   ` Sonny Rao
2006-06-21 19:09     ` Serge E. Hallyn
2006-06-21 19:27       ` Sonny Rao
2006-06-21 19:42         ` Serge E. Hallyn
2006-06-21 20:12           ` Sonny Rao
2006-06-22 11:59             ` Serge E. Hallyn
2006-06-22 20:03               ` Sonny Rao

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox