Messages in this thread Patch in this message | | | From | Michel Lespinasse <> | Subject | [PATCH 1/9] mm: rcu read lock for getting reference on pages in migration_entry_wait() | Date | Fri, 19 Aug 2011 00:48:23 -0700 |
| |
migration_entry_wait() needs to take the rcu read lock so that page counts can be guaranteed to be stable after one rcu grace period.
Signed-off-by: Michel Lespinasse <walken@google.com> --- mm/migrate.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/mm/migrate.c b/mm/migrate.c index 666e4e6..6f3b5db 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -193,6 +193,7 @@ void migration_entry_wait(struct mm_struct *mm, pmd_t *pmd, struct page *page; ptep = pte_offset_map_lock(mm, pmd, address, &ptl); + rcu_read_lock(); pte = *ptep; if (!is_swap_pte(pte)) goto out; @@ -212,11 +213,13 @@ void migration_entry_wait(struct mm_struct *mm, pmd_t *pmd, */ if (!get_page_unless_zero(page)) goto out; + rcu_read_unlock(); pte_unmap_unlock(ptep, ptl); wait_on_page_locked(page); put_page(page); return; out: + rcu_read_unlock(); pte_unmap_unlock(ptep, ptl); } -- 1.7.3.1
| |