diff options
author | Hugh Dickins <hugh@veritas.com> | 2005-10-29 21:16:15 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-10-30 00:40:39 -0400 |
commit | 9e9bef07ce5a342aa6246ebc5c20829d0d5d63d0 (patch) | |
tree | 6f7286ebbb2c4b8af7bb04897a64b054c67faa4a /mm/memory.c | |
parent | 86d912f41dca32eca8827f2f878139735e69dc28 (diff) |
[PATCH] mm: do_swap_page race major
Small adjustment: do_swap_page should report its !pte_same race as a major
fault if it had to read into swap cache, because whatever raced with it will
have found page already in cache and reported minor fault.
Signed-off-by: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'mm/memory.c')
-rw-r--r-- | mm/memory.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/mm/memory.c b/mm/memory.c index bc6296398f8b..a25ee1d3e20a 100644 --- a/mm/memory.c +++ b/mm/memory.c | |||
@@ -1728,10 +1728,8 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma, | |||
1728 | */ | 1728 | */ |
1729 | spin_lock(&mm->page_table_lock); | 1729 | spin_lock(&mm->page_table_lock); |
1730 | page_table = pte_offset_map(pmd, address); | 1730 | page_table = pte_offset_map(pmd, address); |
1731 | if (unlikely(!pte_same(*page_table, orig_pte))) { | 1731 | if (unlikely(!pte_same(*page_table, orig_pte))) |
1732 | ret = VM_FAULT_MINOR; | ||
1733 | goto out_nomap; | 1732 | goto out_nomap; |
1734 | } | ||
1735 | 1733 | ||
1736 | if (unlikely(!PageUptodate(page))) { | 1734 | if (unlikely(!PageUptodate(page))) { |
1737 | ret = VM_FAULT_SIGBUS; | 1735 | ret = VM_FAULT_SIGBUS; |