Commit 08259d58e4fa12ceaece82193c5816152f638cca

Authored by Hugh Dickins
Committed by Linus Torvalds
1 parent c08c6e1f54

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>

Showing 1 changed file with 5 additions and 1 deletions Side-by-side Diff

... ... @@ -2161,7 +2161,11 @@
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 2170 int swap_duplicate(swp_entry_t entry)
2167 2171 {