Fix two bugs in device migration paths: 1) migrate_vma_collect_huge_pmd() calls spin_unlock after softleaf_entry_wait_on_locked(), which already releases the ptl. 2) migrate_vma_insert_huge_pmd_page() has a dead else-if branch and this branch is always unreachable. Signed-off-by: Sunny Patel --- mm/migrate_device.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mm/migrate_device.c b/mm/migrate_device.c index 8079676c8f1f..0e005c26ee88 100644 --- a/mm/migrate_device.c +++ b/mm/migrate_device.c @@ -177,7 +177,6 @@ static int migrate_vma_collect_huge_pmd(pmd_t *pmdp, unsigned long start, if (softleaf_is_migration(entry)) { softleaf_entry_wait_on_locked(entry, ptl); - spin_unlock(ptl); return -EAGAIN; } @@ -869,8 +868,7 @@ static int migrate_vma_insert_huge_pmd_page(struct migrate_vma *migrate, if (!is_huge_zero_pmd(*pmdp)) goto unlock_abort; flush = true; - } else if (!pmd_none(*pmdp)) - goto unlock_abort; + } add_mm_counter(vma->vm_mm, MM_ANONPAGES, HPAGE_PMD_NR); folio_add_new_anon_rmap(folio, vma, addr, RMAP_EXCLUSIVE); -- 2.43.0