mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Linus Torvalds <torvalds@linux-foundation.org>
To: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>,
	Torsten Kaiser <just.for.lkml@googlemail.com>,
	Ingo Molnar <mingo@elte.hu>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Christoph Lameter <clameter@sgi.com>
Subject: Re: Linux 2.6.25-rc2
Date: Tue, 19 Feb 2008 08:20:38 -0800 (PST)	[thread overview]
Message-ID: <alpine.LFD.1.00.0802190806330.7833@woody.linux-foundation.org> (raw)
In-Reply-To: <84144f020802190638i4a364d19o8986a457e76ec187@mail.gmail.com>



On Tue, 19 Feb 2008, Pekka Enberg wrote:
> 
> Hmm. The barrier() in slab_free() looks fishy. The comment says it's
> there to make sure we've retrieved c->freelist before c->page but then
> it uses a _compiler barrier_ which doesn't affect the CPU and the
> reads may still be re-ordered... Not sure if that matters here though.

No, no. The comment says that it's purely there to serialize an 
*interrupt*, and as such, a compiler-only barrier is sufficient (or the 
comment is wrong).

Interrupts are "totally ordered" within a cpu (of course, in theory a CPU 
might have speculative work etc reordering, but the CPU also guarantees 
that interrupt acts _as_if_ it was exact), so a compiler barrier is 
sufficient.

Of course, if we're talking about interrupts on another CPU, that's a 
different issue, but the fact is, in that case it's not about interrupts 
any more (might as well be other code just running normally on another 
CPU), and a barrier doesn't help, it needs real locking.

So that barrier is fine per se. Of course, the whole code (and/or just the 
comment!) may be buggered, but any CPU SMP-aware barriers shouldn't be 
relevant.

What's much more likely to be an issue is simply the fact that since the 
fastpath now accesses the per-cpu freelist without any locking, if there 
is *any* sequence what-so-ever that does it from another CPU and assumes 
the old locking behaviour, the list will be corrupted. And from a quick 
look-through, I certainly cannot guarantee that isn't the case.

There's still a lot of cases that do direct assignments to "c->freelist" 
without using a guaranteed atomic sequence. They *should* be safe if it's 
guaranteed that 
 (a) they always run with interrupts disabled
AND
 (b) 'c' is _always_ the "current CPU" list

but I can't quickly see that guarantee for either.

I'd happily just revert this thing, but it would be really good to have 
confirmation that it seems to matter. But Torsten's partial bisection 
seems to say that the quicklist thing went into -mm before the crash even 
started.

So:
 - it might be something else entirely
 - it might still be the local cmpxchg, just Torsten didn't happen to 
   notice it until later.
 - it might still be the local cmpxchg, but something else changed its 
   patterns to actually make it start triggering.

and in general I don't think we should revert it unless we have stronger 
indications that it really is the problem (eg somebody finds the actual 
bug, or a reporter can confirm that it goes away when the local cmpxchg 
optimization is disabled).

		Linus

  parent reply	other threads:[~2008-02-19 16:21 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-15 21:23 Linus Torvalds
2008-02-16  2:08 ` Rafael J. Wysocki
2008-02-16  5:44 ` [BUG] Linux 2.6.25-rc2 - Kernel Ooops while running dbench Kamalesh Babulal
2008-02-18 12:59   ` Andrew Morton
2008-02-18 14:25     ` Jeff Garzik
2008-02-18 16:11       ` Frans Pop
2008-03-03 11:51     ` Pekka Enberg
2008-03-04  4:03       ` Kamalesh Babulal
2008-02-16  6:10 ` [BUG] Linux 2.6.25-rc2 - Regression from 2.6.24-rc1-git1 softlockup while bootup on powerpc Kamalesh Babulal
2008-02-17 19:29   ` Jens Axboe
2008-02-19  8:04     ` KAMEZAWA Hiroyuki
2008-02-19  8:36       ` Jens Axboe
2008-02-19  8:47         ` KAMEZAWA Hiroyuki
2008-02-19  8:58           ` Jens Axboe
2008-02-19  9:07             ` KAMEZAWA Hiroyuki
2008-02-19  9:09               ` Jens Axboe
2008-02-19  9:02         ` KAMEZAWA Hiroyuki
2008-02-19  9:01           ` Jens Axboe
2008-02-19 13:19         ` Kamalesh Babulal
2008-02-22  7:24         ` Andrew Morton
2008-02-22  7:40           ` Jens Axboe
2008-02-17 20:08   ` Rafael J. Wysocki
2008-02-16 16:52 ` Linux 2.6.25-rc2 Jan Engelhardt
2008-02-16 19:14 ` Linux 2.6.25-rc2 regression: LVM cannot find volume group Tilman Schmidt
2008-02-16 20:12   ` Alan Cox
2008-02-16 22:37     ` Jiri Slaby
2008-02-18  0:57       ` Tilman Schmidt
2008-02-18  1:22         ` Jeff Chua
2008-02-18 10:35           ` Tilman Schmidt
2008-02-19  1:53       ` Alasdair G Kergon
2008-02-19  8:56         ` Tilman Schmidt
2008-02-16 21:38 ` Linux 2.6.25-rc2 Torsten Kaiser
2008-02-17 20:25   ` Rafael J. Wysocki
2008-02-17 21:32     ` Torsten Kaiser
2008-02-18 23:54   ` Linus Torvalds
2008-02-19  6:44     ` Torsten Kaiser
2008-02-19  6:11   ` Ingo Molnar
2008-02-19  6:54     ` Torsten Kaiser
2008-02-19  7:21       ` Pekka Enberg
2008-02-19 10:27         ` Ingo Molnar
2008-02-19 10:45           ` Pekka Enberg
2008-02-19 13:02           ` Mathieu Desnoyers
2008-02-19 14:00             ` Ingo Molnar
2008-02-19 14:02         ` Mathieu Desnoyers
2008-02-19 14:21           ` Pekka Enberg
2008-02-19 14:38             ` Pekka Enberg
2008-02-19 14:55               ` Ingo Molnar
2008-02-19 14:57                 ` Ingo Molnar
2008-02-19 15:54                   ` Pekka Enberg
2008-02-19 15:52                 ` Pekka Enberg
2008-02-20  0:36                   ` Zhang, Yanmin
2008-02-20  2:08                     ` Zhang, Yanmin
2008-02-20  6:53                       ` Zhang, Yanmin
2008-02-20  7:10                         ` Pekka Enberg
2008-02-19 16:20               ` Linus Torvalds [this message]
2008-02-19 16:45                 ` Ingo Molnar
2008-02-19 16:48                   ` Ingo Molnar
2008-02-19 19:27                 ` Torsten Kaiser
2008-02-19 20:08             ` Mathieu Desnoyers
2008-02-27 23:32               ` Christoph Lameter
2008-02-28  1:57                 ` Andrew Morton
2008-02-28  2:43                   ` Christoph Lameter
2008-02-28  8:14                   ` Ingo Molnar
2008-02-28 11:15                     ` Alan Cox
2008-02-28 11:13                   ` Jiri Kosina
2008-02-19 16:27           ` Eric Dumazet
2008-02-19 16:38             ` Linus Torvalds
2008-02-19 20:03             ` Mathieu Desnoyers
2008-02-27 23:34               ` Christoph Lameter
2008-02-28  5:55                 ` [PATCH] Implement slub fastpath in terms of freebase and freeoffset Mathieu Desnoyers
2008-02-28 19:08                   ` Christoph Lameter
2008-02-28 23:25                     ` Mathieu Desnoyers
2008-02-29  0:57                       ` Christoph Lameter
2008-02-29  1:56                         ` Mathieu Desnoyers
2008-02-29  2:12                           ` Christoph Lameter
2008-02-29  3:32                             ` Mathieu Desnoyers
2008-02-29  5:11                               ` Christoph Lameter
2008-02-29 13:03                                 ` Mathieu Desnoyers
2008-02-29 19:57                                   ` Christoph Lameter
2008-02-29 13:28                                 ` [PATCH] Slub Freeoffset check overflow Mathieu Desnoyers
2008-03-04  6:17                                   ` [PATCH] Slub Freeoffset check overflow (updated) Mathieu Desnoyers
2008-03-04  7:15                                     ` Christoph Lameter
2008-02-27 23:32             ` Linux 2.6.25-rc2 Christoph Lameter
2008-02-19 18:39           ` Torsten Kaiser

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.LFD.1.00.0802190806330.7833@woody.linux-foundation.org \
    --to=torvalds@linux-foundation.org \
    --cc=clameter@sgi.com \
    --cc=just.for.lkml@googlemail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@polymtl.ca \
    --cc=mingo@elte.hu \
    --cc=penberg@cs.helsinki.fi \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®