* [PATCH] Bad page state mapcount
@ 2005-03-01 21:11 Hugh Dickins
0 siblings, 0 replies; only message in thread
From: Hugh Dickins @ 2005-03-01 21:11 UTC (permalink / raw)
To: Linus Torvalds
Cc: Andrew Morton, Colin Harrison, Ammar T. Al-Sayegh, linux-kernel
A small change to the tests for "Bad page state", to avoid one class of
the page_remove_rmap BUG reports, giving more information while letting
the system continue: check page_mapcount (_mapcount != -1) rather than
page_mapped (_mapcount >= 0).
And how does _mapcount go bad? In the case under study, it looks sure
now that an overheating(?) Pentium III sometimes gets confused by a pair
of instructions in the no-buddy-bitmap __free_pages_bulk, and clears the
PG_private bit from the _mapcount field while buddying around - changing
PG_private value changes the bit cleared from _mapcount. Bad page state
mapcount:-4096 would have tracked this down much sooner, and will be
recognizable if other cpus show the same aberrant reaction to 2.6.11.
The page_remove_rmap BUG does need to be replaced by more permissive and
informative handling, but I'm not yet ready to to finalize such a patch.
Please admit Colin Harrison to the Order of the Iridescent Penguin,
for his tireless testing.
Signed-off-by: Hugh Dickins <hugh@veritas.com>
--- 2.6.11-rc5-bk4/mm/page_alloc.c 2005-02-24 19:44:06.000000000 +0000
+++ linux/mm/page_alloc.c 2005-03-01 19:58:44.000000000 +0000
@@ -276,7 +276,7 @@ static inline void __free_pages_bulk (st
static inline void free_pages_check(const char *function, struct page *page)
{
- if ( page_mapped(page) ||
+ if ( page_mapcount(page) ||
page->mapping != NULL ||
page_count(page) != 0 ||
(page->flags & (
@@ -404,7 +404,7 @@ void set_page_refs(struct page *page, in
*/
static void prep_new_page(struct page *page, int order)
{
- if (page->mapping || page_mapped(page) ||
+ if (page->mapping || page_mapcount(page) ||
(page->flags & (
1 << PG_private |
1 << PG_locked |
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2005-03-01 21:13 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-03-01 21:11 [PATCH] Bad page state mapcount Hugh Dickins
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®