Hugh Dickins c74df32c72 [PATCH] mm: ptd_alloc take ptlock
Second step in pushing down the page_table_lock.  Remove the temporary
bridging hack from __pud_alloc, __pmd_alloc, __pte_alloc: expect callers not
to hold page_table_lock, whether it's on init_mm or a user mm; take
page_table_lock internally to check if a racing task already allocated.

Convert their callers from common code.  But avoid coming back to change them
again later: instead of moving the spin_lock(&mm->page_table_lock) down,
switch over to new macros pte_alloc_map_lock and pte_unmap_unlock, which
encapsulate the mapping+locking and unlocking+unmapping together, and in the
end may use alternatives to the mm page_table_lock itself.

These callers all hold mmap_sem (some exclusively, some not), so at no level
can a page table be whipped away from beneath them; and pte_alloc uses the
"atomic" pmd_present to test whether it needs to allocate.  It appears that on
all arches we can safely descend without page_table_lock.

Signed-off-by: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-10-29 21:40:40 -07:00
..
2005-10-28 08:16:47 -07:00
2005-10-04 13:22:01 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-09-21 10:12:18 -07:00
2005-09-30 12:41:18 -07:00
2005-10-28 08:16:47 -07:00
2005-10-28 08:16:47 -07:00
2005-08-06 09:42:06 -07:00
2005-10-28 08:16:47 -07:00
2005-09-23 12:38:47 -04:00
2005-04-16 15:20:36 -07:00
2005-05-05 16:36:47 -07:00
2005-04-16 15:20:36 -07:00
2005-10-28 10:13:16 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-10-28 08:16:47 -07:00
2005-07-12 20:38:38 -07:00
2005-05-05 16:36:47 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-10-28 08:16:47 -07:00
2005-10-28 08:16:47 -07:00
2005-07-12 16:01:02 -07:00
2005-10-28 08:16:47 -07:00
2005-10-29 21:40:39 -07:00
2005-04-16 15:20:36 -07:00
2005-10-28 08:16:47 -07:00
2005-10-29 21:40:40 -07:00
2005-09-09 13:57:55 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-10-28 08:16:47 -07:00
2005-10-23 16:38:39 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-10-18 14:20:21 -07:00
2005-10-28 08:16:47 -07:00
2005-10-08 15:00:57 -07:00
2005-04-16 15:20:36 -07:00
2005-09-10 10:06:22 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-09-09 13:57:55 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00