diff options
author | Hugh Dickins <hugh.dickins@tiscali.co.uk> | 2010-03-05 16:42:25 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-06 14:26:27 -0500 |
commit | 08259d58e4fa12ceaece82193c5816152f638cca (patch) | |
tree | 8c032914139c5aec362a73b8316cf81f020f9f8f | |
parent | c08c6e1f54c85fc299cf9f88cf330d6dd28a9a1d (diff) |
mm: add comment on swap_duplicate's error code
swap_duplicate()'s loop appears to miss out on returning the error code
from __swap_duplicate(), except when that's -ENOMEM. In fact this is
intentional: prior to -ENOMEM for swap_count_continuation,
swap_duplicate() was void (and the case only occurs when copy_one_pte()
hits a corrupt pte). But that's surprising behaviour, which certainly
deserves a comment.
Signed-off-by: Hugh Dickins <hughd@google.com>
Reported-by: Huang Shijie <shijie8@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | mm/swapfile.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/mm/swapfile.c b/mm/swapfile.c index 4a986127f15e..84374d8cf814 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c | |||
@@ -2161,7 +2161,11 @@ void swap_shmem_alloc(swp_entry_t entry) | |||
2161 | } | 2161 | } |
2162 | 2162 | ||
2163 | /* | 2163 | /* |
2164 | * increase reference count of swap entry by 1. | 2164 | * Increase reference count of swap entry by 1. |
2165 | * Returns 0 for success, or -ENOMEM if a swap_count_continuation is required | ||
2166 | * but could not be atomically allocated. Returns 0, just as if it succeeded, | ||
2167 | * if __swap_duplicate() fails for another reason (-EINVAL or -ENOENT), which | ||
2168 | * might occur if a page table entry has got corrupted. | ||
2165 | */ | 2169 | */ |
2166 | int swap_duplicate(swp_entry_t entry) | 2170 | int swap_duplicate(swp_entry_t entry) |
2167 | { | 2171 | { |