diff --git a/mm/migrate.c b/mm/migrate.c index be787d506fbbf3347da5b2a4f8e984b9f0450f18..a987525810ae3da6aec4b358944b33da80d33366 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -1780,7 +1780,8 @@ int migrate_misplaced_transhuge_page(struct mm_struct *mm, putback_lru_page(page); mod_zone_page_state(page_zone(page), NR_ISOLATED_ANON + page_lru, -HPAGE_PMD_NR); - goto out_fail; + + goto out_unlock; } /* @@ -1854,6 +1855,7 @@ int migrate_misplaced_transhuge_page(struct mm_struct *mm, } spin_unlock(ptl); +out_unlock: unlock_page(page); put_page(page); return 0;