diff options
author | <jgarzik@pretzel.yyz.us> | 2005-05-27 22:07:02 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-05-27 22:07:02 -0400 |
commit | 1f15d694522af9cd7492695f11dd2dc77b6cf098 (patch) | |
tree | 7f67a4c38456ec73359d576a5c602d18c3c3ef72 /mm/memory.c | |
parent | fff9cfd99c0f88645c3f50d7476d6c8cef99f140 (diff) | |
parent | 254feb882a7c6e4e51416dff6a97d847fbbba551 (diff) |
Automatic merge of /spare/repo/netdev-2.6 branch master
Diffstat (limited to 'mm/memory.c')
-rw-r--r-- | mm/memory.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/mm/memory.c b/mm/memory.c index 6bad4c4064e7..d209f745db7f 100644 --- a/mm/memory.c +++ b/mm/memory.c | |||
@@ -1701,12 +1701,13 @@ static int do_swap_page(struct mm_struct * mm, | |||
1701 | spin_lock(&mm->page_table_lock); | 1701 | spin_lock(&mm->page_table_lock); |
1702 | page_table = pte_offset_map(pmd, address); | 1702 | page_table = pte_offset_map(pmd, address); |
1703 | if (unlikely(!pte_same(*page_table, orig_pte))) { | 1703 | if (unlikely(!pte_same(*page_table, orig_pte))) { |
1704 | pte_unmap(page_table); | ||
1705 | spin_unlock(&mm->page_table_lock); | ||
1706 | unlock_page(page); | ||
1707 | page_cache_release(page); | ||
1708 | ret = VM_FAULT_MINOR; | 1704 | ret = VM_FAULT_MINOR; |
1709 | goto out; | 1705 | goto out_nomap; |
1706 | } | ||
1707 | |||
1708 | if (unlikely(!PageUptodate(page))) { | ||
1709 | ret = VM_FAULT_SIGBUS; | ||
1710 | goto out_nomap; | ||
1710 | } | 1711 | } |
1711 | 1712 | ||
1712 | /* The page isn't present yet, go ahead with the fault. */ | 1713 | /* The page isn't present yet, go ahead with the fault. */ |
@@ -1741,6 +1742,12 @@ static int do_swap_page(struct mm_struct * mm, | |||
1741 | spin_unlock(&mm->page_table_lock); | 1742 | spin_unlock(&mm->page_table_lock); |
1742 | out: | 1743 | out: |
1743 | return ret; | 1744 | return ret; |
1745 | out_nomap: | ||
1746 | pte_unmap(page_table); | ||
1747 | spin_unlock(&mm->page_table_lock); | ||
1748 | unlock_page(page); | ||
1749 | page_cache_release(page); | ||
1750 | goto out; | ||
1744 | } | 1751 | } |
1745 | 1752 | ||
1746 | /* | 1753 | /* |