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); |
