diff options
Diffstat (limited to 'mm/shmem.c')
-rw-r--r-- | mm/shmem.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/mm/shmem.c b/mm/shmem.c index ce501bce1c2e..f7ac7b812f92 100644 --- a/mm/shmem.c +++ b/mm/shmem.c | |||
@@ -1028,6 +1028,14 @@ repeat: | |||
1028 | page_cache_release(swappage); | 1028 | page_cache_release(swappage); |
1029 | goto repeat; | 1029 | goto repeat; |
1030 | } | 1030 | } |
1031 | if (!PageSwapCache(swappage)) { | ||
1032 | /* Page migration has occured */ | ||
1033 | shmem_swp_unmap(entry); | ||
1034 | spin_unlock(&info->lock); | ||
1035 | unlock_page(swappage); | ||
1036 | page_cache_release(swappage); | ||
1037 | goto repeat; | ||
1038 | } | ||
1031 | if (PageWriteback(swappage)) { | 1039 | if (PageWriteback(swappage)) { |
1032 | shmem_swp_unmap(entry); | 1040 | shmem_swp_unmap(entry); |
1033 | spin_unlock(&info->lock); | 1041 | spin_unlock(&info->lock); |