From: Linus Torvalds <torvalds@linux-foundation.org>
To: Christoph Lameter <clameter@sgi.com>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>,
Pawel Staszewski <pstaszewski@artcom.pl>,
LKML <linux-kernel@vger.kernel.org>,
Adrian Bunk <bunk@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Natalie Protasevich <protasnb@gmail.com>
Subject: Re: 2.6.25-rc7-git2: Reported regressions from 2.6.24
Date: Fri, 28 Mar 2008 12:25:57 -0700 (PDT) [thread overview]
Message-ID: <alpine.LFD.1.00.0803281214580.14670@woody.linux-foundation.org> (raw)
In-Reply-To: <Pine.LNX.4.64.0803281128480.17805@schroedinger.engr.sgi.com>
On Fri, 28 Mar 2008, Christoph Lameter wrote:
>
> prep_zero_page does:
>
> static inline void prep_zero_page(struct page *page, int order, gfp_t gfp_flags)
> {
> int i;
>
> /*
> * clear_highpage() will use KM_USER0, so it's a bug to use __GFP_ZERO
> * and __GFP_HIGHMEM from hard or soft interrupt context.
> */
> VM_BUG_ON((gfp_flags & __GFP_HIGHMEM) && in_interrupt());
> for (i = 0; i < (1 << order); i++)
> clear_highpage(page + i);
.. and clear_highpage() does:
void *kaddr = kmap_atomic(page, KM_USER0);
clear_page(kaddr);
.. where kmap_atomic() on x86 does:
kmap_atomic() ->
kmap_atomic_prot() ->
debug_kmap_atomic_prot() ->
if (in_irq())
WARN_ON_ONCE()
none of which are at all conditional on __GFP_HIGHMEM.
But none of this is relevant. The warning possibly didn't even come from
slub, it just made me look at it - because *something* is doing GFP_ATOMIC
together with __GFP_ZERO, and it became obvious that SLUB is one potential
cause of that.
And the SLUB case simply isn't valid!
> Then clear_highpage calls additional checking functions that have
> the effect of generally forbiding zeroing in interrupt context if
> CONFIG_HIGHMEM is set. This is wrong and needs to be fixed.
No. Dammit, the bug is in SLUB.
If SLUB *ever* calls the page allocator with __GFP_ZERO set, it's a
bug, and that has nothing to do with GFP_ATOMIC or anything else. Because
SLUB uses its own logic for clearing the result.
Why cannot you just admit it?
Now, _outside_ of SLUB there appear to be other users too, and those users
need to either be fixed or we need to allow __GFP_ZERO togethe with
GFP_ATOMIC. But the fact is, SLUB had a really stupid bug that it
shouldn't have had.
Linus
next prev parent reply other threads:[~2008-03-28 19:27 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-27 22:53 Rafael J. Wysocki
2008-03-28 0:18 ` Carlos R. Mafra
2008-03-28 0:23 ` Rafael J. Wysocki
2008-03-28 2:30 ` Linus Torvalds
2008-03-28 3:24 ` Christoph Lameter
2008-03-28 4:00 ` Linus Torvalds
2008-03-28 10:48 ` Paweł Staszewski
2008-03-28 17:46 ` Andrew Morton
2008-03-28 21:57 ` Rafael J. Wysocki
2008-03-28 17:15 ` Pekka Enberg
2008-03-28 17:27 ` Linus Torvalds
2008-03-28 18:08 ` Pekka Enberg
2008-03-28 18:20 ` Linus Torvalds
2008-03-28 18:38 ` Christoph Lameter
2008-03-28 18:47 ` Andrew Morton
2008-03-28 18:53 ` Christoph Lameter
2008-03-28 19:37 ` Linus Torvalds
2008-03-28 19:59 ` Linus Torvalds
2008-03-28 19:59 ` Pekka Enberg
2008-03-28 20:24 ` Linus Torvalds
2008-03-28 18:37 ` Christoph Lameter
2008-03-28 19:32 ` Linus Torvalds
2008-03-28 18:33 ` Christoph Lameter
2008-03-28 19:25 ` Linus Torvalds [this message]
2008-03-29 20:42 ` Christoph Lameter
2008-03-29 21:29 ` Linus Torvalds
2008-03-29 23:52 ` Pekka Enberg
2008-03-31 18:56 ` Christoph Lameter
2008-03-31 18:45 ` Christoph Lameter
2008-03-28 3:31 ` Yinghai Lu
2008-03-31 10:14 ` Kamalesh Babulal
2008-03-31 12:10 ` Rafael J. Wysocki
2008-03-28 11:29 ` Haavard Skinnemoen
2008-03-28 16:11 ` Rafael J. Wysocki
2008-03-28 16:10 ` Rafael J. Wysocki
2008-03-28 16:47 ` Linus Torvalds
2008-03-28 17:36 ` Adrian Bunk
2008-03-28 20:33 ` Ingo Molnar
2008-03-28 22:28 ` Rafael J. Wysocki
2008-03-31 13:34 ` Ingo Molnar
2008-03-28 10:24 ` Thomas Gleixner
2008-03-28 10:58 ` Thomas Gleixner
2008-03-28 11:00 ` Peter Zijlstra
2008-03-28 11:13 ` Adrian Bunk
2008-03-28 11:16 ` Thomas Gleixner
2008-03-28 11:31 ` Adrian Bunk
2008-03-28 16:17 ` Rafael J. Wysocki
2008-03-28 17:06 ` Adrian Bunk
2008-03-28 20:42 ` Ingo Molnar
2008-03-28 22:33 ` Rafael J. Wysocki
2008-03-28 11:44 ` Peter Zijlstra
2008-03-28 16:12 ` Rafael J. Wysocki
2008-03-28 16:18 ` Thomas Gleixner
2008-03-28 18:57 ` Mark Lord
2008-03-28 22:37 ` Rafael J. Wysocki
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.0803281214580.14670@woody.linux-foundation.org \
--to=torvalds@linux-foundation.org \
--cc=akpm@linux-foundation.org \
--cc=bunk@kernel.org \
--cc=clameter@sgi.com \
--cc=linux-kernel@vger.kernel.org \
--cc=protasnb@gmail.com \
--cc=pstaszewski@artcom.pl \
--cc=rjw@sisk.pl \
/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®