From nobody Sun Jun 14 07:35:51 2026 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5201E38CFF1 for ; Fri, 1 May 2026 11:51:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777636294; cv=none; b=UNbWVScKgT5EWoKdfYTCLKYP12QEzTw5gxrsFfH33pDlLqq1P8DUFcjDdQBkm0C1H95si3Gmy5bTrdn9Ojy/Pk73j4jL1AADDJ8KfzgQ7QOyVA72o99uQPKagppkCeV3TR2ADfUzvilO2vz6WcebvxkcYcPPV8Ba0Nc5tU3SsW8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777636294; c=relaxed/simple; bh=vFv3L6Kmb0i1OJfe/VcatVDHmVBStixL4ihL9mAuQBc=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=lo7ndzDMoffitZ4wULTPXfAWXKDC/g2rAYrX95iMiUv9bOPFefor4UGUjAS4wy1Kyw8TV2UzTrc6V1yNdgriH8R9jKdGD9QGLvztUQg7M8iVJ1VTYhuTryeVpxrmk33QoQ20KvDyGzgleGW3/hE90AS1hhK89/maHTuvR88LUPc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Ak6XtD+f; arc=none smtp.client-ip=209.85.210.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Ak6XtD+f" Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-8296d553142so1257302b3a.3 for ; Fri, 01 May 2026 04:51:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777636293; x=1778241093; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=5tw+WZA+mqeGQt1Qd8OUfYQgGb3rmHRrC8yOZWNPTlc=; b=Ak6XtD+fed2xo4t1JNxtJmYZG0TQpOD+9u1HJpHJB4xL9pwIkjjJgKkKRGS+hQM7yP KAyLQ9AN/bnk8oKf21qxBmm9BBzWeYxsFC6yf0b+zZ1zawPZwZd+/Wq78AQGdfMcr49S ecBjQvgaWKvZCNKSas9ZizmfRccwAG3G8q7ezGC5iwGVYPVsh3YlZKis/MciqUjNnFD9 eWEbPVyFgBEgPSv9VfeQcfMOa5Pil513p46sg9BAeGu9QmdAtoIMK1oCkbCxenB4PQZm sj6dnzZQOwdUkgyLjDC/kAxsKSSJEtNZo/4JSINSwGVhtFd9UqkveFXvrBQkYI+ypyV1 XDrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777636293; x=1778241093; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=5tw+WZA+mqeGQt1Qd8OUfYQgGb3rmHRrC8yOZWNPTlc=; b=otBB/TmG3zSryaw1MA1WWGMfn0JUfwsDENkqJCuDVh7nSXBpGlv/w4A7YsuwAlbl3/ +56cLA3rDlo788PmnsEGylEBcfcWQmLbJLfQE59/2vHJQ8FnRXjqvJrR045fk+P2+wtj MaOQLTcuFjhzusOfR5LFr3e5lPlEFu2Dv310FggmRKVDSddJ7s8RkwLqfspiwjR4rDBf XxaqXUbrr3yt96bTSzb5gvGarSoNzUs7H9BeA/f9vYLXORoaZynaWecoBZS3yEe+wprw fDzMVKi+mNphWRo3uhLGR2EXqih1CxPQSJbTBnvcwLfIUqAwjfqiyw9iPkuq8DgN9MPy Nn4Q== X-Forwarded-Encrypted: i=1; AFNElJ/Q0cUSFW95+zKehK0NPQZUhYp7rq0WJGrGHmDkQ2DQYnk6iZzyjbPbSSQo0egz+jXX4nGBmH0PtMTFeIo=@vger.kernel.org X-Gm-Message-State: AOJu0Ywt7avJIFneFIZaFPElsUfhfjFzKpwUGyxwGdFmpD3qEFiPz72E BVoI0NXRjoNEbgni77EuHXC5awqmdB1EFUNPWNfbdOhun4rnYPp58A76 X-Gm-Gg: AeBDieu0HyJ6wGLd7e9afijAEYAEEWuQbq7eahyU2+EiqdYEOh8/pVeQaVGbSPIL8oY Hx8hmBOBbEa8zNjP9vpjkBnwc51yozg0aPzWiJ27pywAeyZe6MiE7rZ3TMI7kY4lGuL0F/T5NrN qBHkeVHDbnfQ11tfVVjT1cLr/tuyEeYPFelE1LVISnmF0R44S8hsnrnvyFAqjQsqoP3jP9bJcSq VRB49xvb6bIhQdEo3RKReRs4L+yjI7X69V6qLmQldBugemGD9+DsH1uzgxSqpxg4O7mKve6NRm/ Wx2KdrRPP6QMF32jGpOcFX9ywMaR5Vf6FfPWrDGfRTsWOQQSWHEPGj3V2VYKt8z7oVnaBDHYRji oYiRu+oR+0FB9e9RZh8bWAQqLCXWf/o907D6c0IJJ7QGaaVa61EindkrzjdFW+4Fi+QHgTqeC9k SHNXvwKl594z22DFexwxZ0VYUOfNf/liqf6oNZVNimf6pEwmluHCmN3Gvo X-Received: by 2002:a05:6a00:4c93:b0:834:df57:9d36 with SMTP id d2e1a72fcca58-834fdc5aac0mr7868686b3a.25.1777636292620; Fri, 01 May 2026 04:51:32 -0700 (PDT) Received: from tech-Alienware-m15-R6.. ([122.171.19.217]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83515893f14sm2563533b3a.17.2026.05.01.04.51.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 May 2026 04:51:32 -0700 (PDT) From: Sunny Patel To: Andrew Morton , David Hildenbrand Cc: Zi Yan , Matthew Brost , Joshua Hahn , Rakie Kim , Byungchul Park , Gregory Price , Ying Huang , Alistair Popple , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Sunny Patel Subject: [PATCH v3] mm/migrate_device: fix pgtable leak in migrate_vma_insert_huge_pmd_page Date: Fri, 1 May 2026 17:21:16 +0530 Message-ID: <20260501115122.23288-1-nueralspacetech@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When migrate_vma_insert_huge_pmd_page() jumps to unlock_abort due to a PMD check failure, the pgtable allocated earlier via pte_alloc_one() is never freed, causing a memory leak. Added free_abort label to release the pgtable in error path. Signed-off-by: Sunny Patel --- Changes in v3: - Added free_abort label as suggested to release the pgtable=20 in error path. - v2 had the pte_free() call in both error paths, this=20 version has a single goto target for both paths to avoid code duplication. mm/migrate_device.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mm/migrate_device.c b/mm/migrate_device.c index fbfe5715f635..0360b410067b 100644 --- a/mm/migrate_device.c +++ b/mm/migrate_device.c @@ -840,7 +840,7 @@ static int migrate_vma_insert_huge_pmd_page(struct migr= ate_vma *migrate, } else { if (folio_is_zone_device(folio) && !folio_is_device_coherent(folio)) { - goto abort; + goto free_abort; } entry =3D folio_mk_pmd(folio, vma->vm_page_prot); if (vma->vm_flags & VM_WRITE) @@ -893,6 +893,8 @@ static int migrate_vma_insert_huge_pmd_page(struct migr= ate_vma *migrate, =20 unlock_abort: spin_unlock(ptl); +free_abort: + pte_free(vma->vm_mm, pgtable); abort: for (i =3D 0; i < HPAGE_PMD_NR; i++) src[i] &=3D ~MIGRATE_PFN_MIGRATE; --=20 2.43.0