diff options
Diffstat (limited to 'mm/shmem.c')
-rw-r--r-- | mm/shmem.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/mm/shmem.c b/mm/shmem.c index 048a95a5244d..91ce9a1024d7 100644 --- a/mm/shmem.c +++ b/mm/shmem.c | |||
@@ -1081,7 +1081,7 @@ static int shmem_writepage(struct page *page, struct writeback_control *wbc) | |||
1081 | shmem_recalc_inode(inode); | 1081 | shmem_recalc_inode(inode); |
1082 | 1082 | ||
1083 | if (swap.val && add_to_swap_cache(page, swap, GFP_ATOMIC) == 0) { | 1083 | if (swap.val && add_to_swap_cache(page, swap, GFP_ATOMIC) == 0) { |
1084 | remove_from_page_cache(page); | 1084 | delete_from_page_cache(page); |
1085 | shmem_swp_set(info, entry, swap.val); | 1085 | shmem_swp_set(info, entry, swap.val); |
1086 | shmem_swp_unmap(entry); | 1086 | shmem_swp_unmap(entry); |
1087 | if (list_empty(&info->swaplist)) | 1087 | if (list_empty(&info->swaplist)) |
@@ -1091,7 +1091,6 @@ static int shmem_writepage(struct page *page, struct writeback_control *wbc) | |||
1091 | spin_unlock(&info->lock); | 1091 | spin_unlock(&info->lock); |
1092 | swap_shmem_alloc(swap); | 1092 | swap_shmem_alloc(swap); |
1093 | BUG_ON(page_mapped(page)); | 1093 | BUG_ON(page_mapped(page)); |
1094 | page_cache_release(page); /* pagecache ref */ | ||
1095 | swap_writepage(page, wbc); | 1094 | swap_writepage(page, wbc); |
1096 | if (inode) { | 1095 | if (inode) { |
1097 | mutex_lock(&shmem_swaplist_mutex); | 1096 | mutex_lock(&shmem_swaplist_mutex); |
@@ -2794,5 +2793,6 @@ int shmem_zero_setup(struct vm_area_struct *vma) | |||
2794 | fput(vma->vm_file); | 2793 | fput(vma->vm_file); |
2795 | vma->vm_file = file; | 2794 | vma->vm_file = file; |
2796 | vma->vm_ops = &shmem_vm_ops; | 2795 | vma->vm_ops = &shmem_vm_ops; |
2796 | vma->vm_flags |= VM_CAN_NONLINEAR; | ||
2797 | return 0; | 2797 | return 0; |
2798 | } | 2798 | } |