diff options
| -rw-r--r-- | include/asm-generic/pgtable.h | 2 | ||||
| -rw-r--r-- | include/linux/mempolicy.h | 3 | ||||
| -rw-r--r-- | mm/filemap.c | 6 | ||||
| -rw-r--r-- | mm/rmap.c | 10 | ||||
| -rw-r--r-- | mm/swap_state.c | 3 |
5 files changed, 11 insertions, 13 deletions
diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h index ff28c8b31f58..7dca30a26c53 100644 --- a/include/asm-generic/pgtable.h +++ b/include/asm-generic/pgtable.h | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | * - update the page tables | 8 | * - update the page tables |
| 9 | * - inform the TLB about the new one | 9 | * - inform the TLB about the new one |
| 10 | * | 10 | * |
| 11 | * We hold the mm semaphore for reading and vma->vm_mm->page_table_lock. | 11 | * We hold the mm semaphore for reading, and the pte lock. |
| 12 | * | 12 | * |
| 13 | * Note: the old pte is known to not be writable, so we don't need to | 13 | * Note: the old pte is known to not be writable, so we don't need to |
| 14 | * worry about dirty bits etc getting lost. | 14 | * worry about dirty bits etc getting lost. |
diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h index 38e60a099399..7af8cb836e78 100644 --- a/include/linux/mempolicy.h +++ b/include/linux/mempolicy.h | |||
| @@ -47,8 +47,7 @@ struct vm_area_struct; | |||
| 47 | * Locking policy for interlave: | 47 | * Locking policy for interlave: |
| 48 | * In process context there is no locking because only the process accesses | 48 | * In process context there is no locking because only the process accesses |
| 49 | * its own state. All vma manipulation is somewhat protected by a down_read on | 49 | * its own state. All vma manipulation is somewhat protected by a down_read on |
| 50 | * mmap_sem. For allocating in the interleave policy the page_table_lock | 50 | * mmap_sem. |
| 51 | * must be also aquired to protect il_next. | ||
| 52 | * | 51 | * |
| 53 | * Freeing policy: | 52 | * Freeing policy: |
| 54 | * When policy is MPOL_BIND v.zonelist is kmalloc'ed and must be kfree'd. | 53 | * When policy is MPOL_BIND v.zonelist is kmalloc'ed and must be kfree'd. |
diff --git a/mm/filemap.c b/mm/filemap.c index f560b41c8f61..036599d1177e 100644 --- a/mm/filemap.c +++ b/mm/filemap.c | |||
| @@ -66,7 +66,7 @@ generic_file_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov, | |||
| 66 | * | 66 | * |
| 67 | * ->mmap_sem | 67 | * ->mmap_sem |
| 68 | * ->i_mmap_lock | 68 | * ->i_mmap_lock |
| 69 | * ->page_table_lock (various places, mainly in mmap.c) | 69 | * ->page_table_lock or pte_lock (various, mainly in memory.c) |
| 70 | * ->mapping->tree_lock (arch-dependent flush_dcache_mmap_lock) | 70 | * ->mapping->tree_lock (arch-dependent flush_dcache_mmap_lock) |
| 71 | * | 71 | * |
| 72 | * ->mmap_sem | 72 | * ->mmap_sem |
| @@ -86,9 +86,9 @@ generic_file_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov, | |||
| 86 | * ->anon_vma.lock (vma_adjust) | 86 | * ->anon_vma.lock (vma_adjust) |
| 87 | * | 87 | * |
| 88 | * ->anon_vma.lock | 88 | * ->anon_vma.lock |
| 89 | * ->page_table_lock (anon_vma_prepare and various) | 89 | * ->page_table_lock or pte_lock (anon_vma_prepare and various) |
| 90 | * | 90 | * |
| 91 | * ->page_table_lock | 91 | * ->page_table_lock or pte_lock |
| 92 | * ->swap_lock (try_to_unmap_one) | 92 | * ->swap_lock (try_to_unmap_one) |
| 93 | * ->private_lock (try_to_unmap_one) | 93 | * ->private_lock (try_to_unmap_one) |
| 94 | * ->tree_lock (try_to_unmap_one) | 94 | * ->tree_lock (try_to_unmap_one) |
| @@ -32,7 +32,7 @@ | |||
| 32 | * page->flags PG_locked (lock_page) | 32 | * page->flags PG_locked (lock_page) |
| 33 | * mapping->i_mmap_lock | 33 | * mapping->i_mmap_lock |
| 34 | * anon_vma->lock | 34 | * anon_vma->lock |
| 35 | * mm->page_table_lock | 35 | * mm->page_table_lock or pte_lock |
| 36 | * zone->lru_lock (in mark_page_accessed) | 36 | * zone->lru_lock (in mark_page_accessed) |
| 37 | * swap_lock (in swap_duplicate, swap_info_get) | 37 | * swap_lock (in swap_duplicate, swap_info_get) |
| 38 | * mmlist_lock (in mmput, drain_mmlist and others) | 38 | * mmlist_lock (in mmput, drain_mmlist and others) |
| @@ -244,7 +244,7 @@ unsigned long page_address_in_vma(struct page *page, struct vm_area_struct *vma) | |||
| 244 | /* | 244 | /* |
| 245 | * Check that @page is mapped at @address into @mm. | 245 | * Check that @page is mapped at @address into @mm. |
| 246 | * | 246 | * |
| 247 | * On success returns with mapped pte and locked mm->page_table_lock. | 247 | * On success returns with pte mapped and locked. |
| 248 | */ | 248 | */ |
| 249 | pte_t *page_check_address(struct page *page, struct mm_struct *mm, | 249 | pte_t *page_check_address(struct page *page, struct mm_struct *mm, |
| 250 | unsigned long address, spinlock_t **ptlp) | 250 | unsigned long address, spinlock_t **ptlp) |
| @@ -445,7 +445,7 @@ int page_referenced(struct page *page, int is_locked, int ignore_token) | |||
| 445 | * @vma: the vm area in which the mapping is added | 445 | * @vma: the vm area in which the mapping is added |
| 446 | * @address: the user virtual address mapped | 446 | * @address: the user virtual address mapped |
| 447 | * | 447 | * |
| 448 | * The caller needs to hold the mm->page_table_lock. | 448 | * The caller needs to hold the pte lock. |
| 449 | */ | 449 | */ |
| 450 | void page_add_anon_rmap(struct page *page, | 450 | void page_add_anon_rmap(struct page *page, |
| 451 | struct vm_area_struct *vma, unsigned long address) | 451 | struct vm_area_struct *vma, unsigned long address) |
| @@ -468,7 +468,7 @@ void page_add_anon_rmap(struct page *page, | |||
| 468 | * page_add_file_rmap - add pte mapping to a file page | 468 | * page_add_file_rmap - add pte mapping to a file page |
| 469 | * @page: the page to add the mapping to | 469 | * @page: the page to add the mapping to |
| 470 | * | 470 | * |
| 471 | * The caller needs to hold the mm->page_table_lock. | 471 | * The caller needs to hold the pte lock. |
| 472 | */ | 472 | */ |
| 473 | void page_add_file_rmap(struct page *page) | 473 | void page_add_file_rmap(struct page *page) |
| 474 | { | 474 | { |
| @@ -483,7 +483,7 @@ void page_add_file_rmap(struct page *page) | |||
| 483 | * page_remove_rmap - take down pte mapping from a page | 483 | * page_remove_rmap - take down pte mapping from a page |
| 484 | * @page: page to remove mapping from | 484 | * @page: page to remove mapping from |
| 485 | * | 485 | * |
| 486 | * Caller needs to hold the mm->page_table_lock. | 486 | * The caller needs to hold the pte lock. |
| 487 | */ | 487 | */ |
| 488 | void page_remove_rmap(struct page *page) | 488 | void page_remove_rmap(struct page *page) |
| 489 | { | 489 | { |
diff --git a/mm/swap_state.c b/mm/swap_state.c index cafc1edcbeba..dfd9a46755b8 100644 --- a/mm/swap_state.c +++ b/mm/swap_state.c | |||
| @@ -259,8 +259,7 @@ static inline void free_swap_cache(struct page *page) | |||
| 259 | 259 | ||
| 260 | /* | 260 | /* |
| 261 | * Perform a free_page(), also freeing any swap cache associated with | 261 | * Perform a free_page(), also freeing any swap cache associated with |
| 262 | * this page if it is the last user of the page. Can not do a lock_page, | 262 | * this page if it is the last user of the page. |
| 263 | * as we are holding the page_table_lock spinlock. | ||
| 264 | */ | 263 | */ |
| 265 | void free_page_and_swap_cache(struct page *page) | 264 | void free_page_and_swap_cache(struct page *page) |
| 266 | { | 265 | { |
