[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.LFD.2.00.1001071204490.7821@localhost.localdomain>
Date: Thu, 7 Jan 2010 12:06:48 -0800 (PST)
From: Linus Torvalds <torvalds@...ux-foundation.org>
To: "Paul E. McKenney" <paulmck@...ux.vnet.ibm.com>
cc: Peter Zijlstra <peterz@...radead.org>,
Christoph Lameter <cl@...ux-foundation.org>,
Arjan van de Ven <arjan@...radead.org>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@...fujitsu.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"linux-mm@...ck.org" <linux-mm@...ck.org>,
"minchan.kim@...il.com" <minchan.kim@...il.com>,
"hugh.dickins" <hugh.dickins@...cali.co.uk>,
Nick Piggin <nickpiggin@...oo.com.au>,
Ingo Molnar <mingo@...e.hu>
Subject: Re: [RFC][PATCH 6/8] mm: handle_speculative_fault()
On Thu, 7 Jan 2010, Paul E. McKenney wrote:
> > +
> > + spin_lock(&mm->page_table_lock);
> > + if (vma->vm_end == cur_brk) {
> > + vma->vm_end = brk;
> > + mm->brk = brk;
> > + cur_brk = brk;
> > + }
> > + spin_unlock(&mm->page_table_lock);
> > +
> > + if (cur_brk != brk)
>
> Can this be "if (cur_brk < brk)"? Seems like it should, given the
> earlier tests, but I don't claim to understand the VM code.
It's really just a flag, to test whether the final check (inside the
spinlock) succeeded, or whether we perhaps raced with _another_ brk() call
that also had the mm_sem for reading.
We know that cur_brk was different from brk before - because otherwise
we'd have just returned early (or done the slow case). So testing whether
it's different afterwards really only tests whether that
cur_brk = brk;
statment was executed or not.
I could have used a separate flag called "success" or something.
Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists