Thread (23 messages) 23 messages, 7 authors, 2003-03-04
STALE8544d

[PATCH 2.5.63] Teach page_mapped about the anon flag

From: Dave McCracken <hidden>
Date: 2003-03-03 20:56:08
Also in: lkml

--On Thursday, February 27, 2003 14:24:50 -0800 Andrew Morton
[off-list ref] wrote:
I'm just looking at page_mapped().  It is now implicitly assuming that the
architecture's representation of a zero-count atomic_t is all-bits-zero.

This is not true on sparc32 if some other CPU is in the middle of an
atomic_foo() against that counter.  Maybe the assumption is false on other
architectures too.

So page_mapped() really should be performing an atomic_read() if that is
appropriate to the particular page.  I guess this involves testing
page->mapping.  Which is stable only when the page is locked or
mapping->page_lock is held.

It appears that all page_mapped() callers are inside lock_page() at
present, so a quick audit and addition of a comment would be appropriate
there please.
I'm not at all confident that page_mapped() is adequately protected.
Here's a patch that explicitly handles the atomic_t case.

Dave McCracken

======================================================================
Dave McCracken          IBM Linux Base Kernel Team      1-512-838-3059
dmccr@us.ibm.com                                        T/L   678-3059

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help