Re: BUG in shared_policy_replace() ?

2005-01-19 Thread Andrew Morton
Andi Kleen <[EMAIL PROTECTED]> wrote:
>
>  > -  new2 = NULL;
> 
>  Ah, I agree. Yes, it looks like a merging error when merging
>  with Hugh's changes. Thanks for catching this.
> 
>  The line should not be removed. Andrew should I submit a new patch or can 
>  you just fix it up?

I'll fix it up, thanks.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: BUG in shared_policy_replace() ?

2005-01-19 Thread Andi Kleen
On Wed, Jan 19, 2005 at 11:25:52AM -0800, Steve Longerbeam wrote:
> 
> 
> Andi Kleen wrote:
> 
> >On Wed, Jan 19, 2005 at 10:59:16AM -0800, Steve Longerbeam wrote:
> > 
> >
> >>Andi Kleen wrote:
> >>
> >>   
> >>
> yeah, 2.6.10 makes sense to me too. But I'm working in -mm2, and
> the new2 = NULL line is missing, hence my initial confusion. Trivial
> patch to -mm2 attached. Just want to make sure it has been, or will be,
> put back in.
>  
> 
>    
> 
> >>>That sounds weird. Can you figure out which patch in mm removes it?
> >>>
> >>>
> >>> 
> >>>
> >>found it:
> >>
> >>http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.10/2.6.10-mm1/broken-out/mempolicy-optimization.patch
> >>   
> >>
> >
> >Are you sure? I don't see it touching the new2 free at the end of the 
> >function.
> > 
> >
> 
> it's not touching the new2 free, it's removing the new2 = NULL which is 
> the problem.
> 
> - new2 = NULL;

Ah, I agree. Yes, it looks like a merging error when merging
with Hugh's changes. Thanks for catching this.

The line should not be removed. Andrew should I submit a new patch or can 
you just fix it up?

-Andi
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: BUG in shared_policy_replace() ?

2005-01-19 Thread Steve Longerbeam

Andi Kleen wrote:
On Wed, Jan 19, 2005 at 10:59:16AM -0800, Steve Longerbeam wrote:
 

Andi Kleen wrote:
   

yeah, 2.6.10 makes sense to me too. But I'm working in -mm2, and
the new2 = NULL line is missing, hence my initial confusion. Trivial
patch to -mm2 attached. Just want to make sure it has been, or will be,
put back in.
 

   

That sounds weird. Can you figure out which patch in mm removes it?
 

found it:
http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.10/2.6.10-mm1/broken-out/mempolicy-optimization.patch
   

Are you sure? I don't see it touching the new2 free at the end of the function.
 

it's not touching the new2 free, it's removing the new2 = NULL which is 
the problem.

-   new2 = NULL;

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: BUG in shared_policy_replace() ?

2005-01-19 Thread Andi Kleen
On Wed, Jan 19, 2005 at 10:59:16AM -0800, Steve Longerbeam wrote:
> 
> Andi Kleen wrote:
> 
> >>yeah, 2.6.10 makes sense to me too. But I'm working in -mm2, and
> >>the new2 = NULL line is missing, hence my initial confusion. Trivial
> >>patch to -mm2 attached. Just want to make sure it has been, or will be,
> >>put back in.
> >>   
> >>
> >
> >That sounds weird. Can you figure out which patch in mm removes it?
> > 
> >
> 
> found it:
> 
> http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.10/2.6.10-mm1/broken-out/mempolicy-optimization.patch

Are you sure? I don't see it touching the new2 free at the end of the function.

-Andi
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: BUG in shared_policy_replace() ?

2005-01-19 Thread Steve Longerbeam

Andi Kleen wrote:
yeah, 2.6.10 makes sense to me too. But I'm working in -mm2, and
the new2 = NULL line is missing, hence my initial confusion. Trivial
patch to -mm2 attached. Just want to make sure it has been, or will be,
put back in.
   

That sounds weird. Can you figure out which patch in mm removes it?
 

found it:
http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.10/2.6.10-mm1/broken-out/mempolicy-optimization.patch
Steve
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: BUG in shared_policy_replace() ?

2005-01-19 Thread Andi Kleen
> yeah, 2.6.10 makes sense to me too. But I'm working in -mm2, and
> the new2 = NULL line is missing, hence my initial confusion. Trivial
> patch to -mm2 attached. Just want to make sure it has been, or will be,
> put back in.

That sounds weird. Can you figure out which patch in mm removes it?

-Andi
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: BUG in shared_policy_replace() ?

2005-01-19 Thread Steve Longerbeam

Andi Kleen wrote:
got it, except that there is no "new2 = NULL;" in 2.6.10-mm2!
Looks like it was misplaced, because I do see it now in 2.6.10.
   

I double checked 2.6.10 and the code also looks correct me,
working as described by Hugh.
Optimistic locking can be ugly :)
 

yeah, 2.6.10 makes sense to me too. But I'm working in -mm2, and
the new2 = NULL line is missing, hence my initial confusion. Trivial
patch to -mm2 attached. Just want to make sure it has been, or will be,
put back in.
Steve
--- mm/mempolicy.c.orig 2005-01-19 09:52:47.153910873 -0800
+++ mm/mempolicy.c  2005-01-19 09:53:21.548999628 -0800
@@ -1041,6 +1041,7 @@
}
n->end = start;
sp_insert(sp, new2);
+   new2 = NULL;
break;
} else
n->end = start;


Re: BUG in shared_policy_replace() ?

2005-01-19 Thread Andi Kleen
> got it, except that there is no "new2 = NULL;" in 2.6.10-mm2!
> 
> Looks like it was misplaced, because I do see it now in 2.6.10.

I double checked 2.6.10 and the code also looks correct me,
working as described by Hugh.

Optimistic locking can be ugly :)

-Andi
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: BUG in shared_policy_replace() ?

2005-01-19 Thread Steve Longerbeam

Hugh Dickins wrote:
On Tue, 18 Jan 2005, Steve Longerbeam wrote:
 

Why free the shared policy created to split up an old
policy that spans the whole new range? Ie, see patch.
   

I think you're misreading it.  That code comes from when I changed it
over from sp->sem to sp->lock.  If it finds that it needs to split an
existing range, so needs to allocate a new2, then it has to drop and
reacquire the spinlock around that.  It's conceivable that a racing
task could change the tree while the spinlock is dropped, in such a
way that this split is no longer necessary once we reacquire the
spinlock.  The code you're looking at frees up new2 in that case;
whereas in the normal case, where it is still needed, there's a
new2 = NULL after inserting it, so that it won't be freed below.
 

got it, except that there is no "new2 = NULL;" in 2.6.10-mm2!
Looks like it was misplaced, because I do see it now in 2.6.10.
Steve
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: BUG in shared_policy_replace() ?

2005-01-19 Thread Hugh Dickins
On Tue, 18 Jan 2005, Steve Longerbeam wrote:
> 
> Why free the shared policy created to split up an old
> policy that spans the whole new range? Ie, see patch.

I think you're misreading it.  That code comes from when I changed it
over from sp->sem to sp->lock.  If it finds that it needs to split an
existing range, so needs to allocate a new2, then it has to drop and
reacquire the spinlock around that.  It's conceivable that a racing
task could change the tree while the spinlock is dropped, in such a
way that this split is no longer necessary once we reacquire the
spinlock.  The code you're looking at frees up new2 in that case;
whereas in the normal case, where it is still needed, there's a
new2 = NULL after inserting it, so that it won't be freed below.

Hugh

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


BUG in shared_policy_replace() ?

2005-01-18 Thread Steve Longerbeam
Hi Andi,
Why free the shared policy created to split up an old
policy that spans the whole new range? Ie, see patch.
Steve
--- mm/mempolicy.c.orig 2005-01-18 16:13:35.573273351 -0800
+++ mm/mempolicy.c  2005-01-18 16:24:23.940608135 -0800
@@ -1052,10 +1052,6 @@
if (new)
sp_insert(sp, new);
spin_unlock(&sp->lock);
-   if (new2) {
-   mpol_free(new2->policy);
-   kmem_cache_free(sn_cache, new2);
-   }
return 0;
 }