]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mm/migrate_device: fix spinlock leak in migrate_vma_insert_huge_pmd_page
authorSunny Patel <nueralspacetech@gmail.com>
Sat, 25 Apr 2026 13:35:27 +0000 (19:05 +0530)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 14 May 2026 00:40:00 +0000 (17:40 -0700)
When check_stable_address_space() fails after the PMD spinlock has
been acquired via pmd_lock(), the code jumps directly to the abort
label, bypassing the spin_unlock() call in unlock_abort. This causes
the PMD spinlock to be permanently held, leading to a deadlock.

Change the goto target from abort to unlock_abort to ensure the
spinlock is always released on this error path.

Link: https://lore.kernel.org/20260425133537.17463-1-nueralspacetech@gmail.com
Fixes: a30b48bf1b24 ("mm/migrate_device: implement THP migration of zone device pages")
Signed-off-by: Sunny Patel <nueralspacetech@gmail.com>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Acked-by: Zi Yan <ziy@nvidia.com>
Acked-by: Balbir Singh <balbirs@nvidia.com>
Acked-by: David Hildenbrand (Arm) <david@kernel.org>
Cc: Alistair Popple <apopple@nvidia.com>
Cc: Byungchul Park <byungchul@sk.com>
Cc: Gregory Price <gourry@gourry.net>
Cc: "Huang, Ying" <ying.huang@linux.alibaba.com>
Cc: Joshua Hahn <joshua.hahnjy@gmail.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Rakie Kim <rakie.kim@sk.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/migrate_device.c

index fbfe5715f6351c69c150154b4c6cdee98785a5b6..ab49d4dcdb60d22790451dc6bb3212824c480bc6 100644 (file)
@@ -850,7 +850,7 @@ static int migrate_vma_insert_huge_pmd_page(struct migrate_vma *migrate,
        ptl = pmd_lock(vma->vm_mm, pmdp);
        csa_ret = check_stable_address_space(vma->vm_mm);
        if (csa_ret)
-               goto abort;
+               goto unlock_abort;
 
        /*
         * Check for userfaultfd but do not deliver the fault. Instead,