> --- > mm/swapfile.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/mm/swapfile.c b/mm/swapfile.c > index 7464d0a92869..9e6da494781f 100644 > --- a/mm/swapfile.c > +++ b/mm/swapfile.c > @@ -1921,10 +1921,8 @@ static int unuse_pte_range(struct vm_area_struct *vma, pmd_t *pmd, > goto out; > } > > - if (PageSwapCache(page) && (swap_count(*swap_map) == 0)) > - delete_from_swap_cache(compound_head(page)); > + try_to_free_swap(page); > > - SetPageDirty(page); > unlock_page(page); > put_page(page); > > -- > 2.18.1 > Since try_to_free_swap() can return 0 under certain error conditions, you should check check for a return status of 1 before calling unlock_page() and put_page(). Reviewed-by: William Kucharski <william.kucharski@xxxxxxxxxx>