summaryrefslogtreecommitdiffstats
path: root/mm/swapfile.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/swapfile.c')
-rw-r--r--mm/swapfile.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/mm/swapfile.c b/mm/swapfile.c
index 8688ae65ef58..dbac1d49469d 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -2197,7 +2197,8 @@ int try_to_unuse(unsigned int type, bool frontswap,
2197 */ 2197 */
2198 if (PageSwapCache(page) && 2198 if (PageSwapCache(page) &&
2199 likely(page_private(page) == entry.val) && 2199 likely(page_private(page) == entry.val) &&
2200 !page_swapped(page)) 2200 (!PageTransCompound(page) ||
2201 !swap_page_trans_huge_swapped(si, entry)))
2201 delete_from_swap_cache(compound_head(page)); 2202 delete_from_swap_cache(compound_head(page));
2202 2203
2203 /* 2204 /*
@@ -2812,8 +2813,9 @@ static struct swap_info_struct *alloc_swap_info(void)
2812 struct swap_info_struct *p; 2813 struct swap_info_struct *p;
2813 unsigned int type; 2814 unsigned int type;
2814 int i; 2815 int i;
2816 int size = sizeof(*p) + nr_node_ids * sizeof(struct plist_node);
2815 2817
2816 p = kvzalloc(sizeof(*p), GFP_KERNEL); 2818 p = kvzalloc(size, GFP_KERNEL);
2817 if (!p) 2819 if (!p)
2818 return ERR_PTR(-ENOMEM); 2820 return ERR_PTR(-ENOMEM);
2819 2821