From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3D54DC71157 for ; Wed, 18 Jun 2025 05:32:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9334A6B0088; Wed, 18 Jun 2025 01:31:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8E3FB6B0089; Wed, 18 Jun 2025 01:31:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7FF326B008A; Wed, 18 Jun 2025 01:31:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 6EBCB6B0088 for ; Wed, 18 Jun 2025 01:31:59 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 15F1D1A04D4 for ; Wed, 18 Jun 2025 05:31:59 +0000 (UTC) X-FDA: 83567399958.26.99952D4 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.16]) by imf13.hostedemail.com (Postfix) with ESMTP id A1FEF20008 for ; Wed, 18 Jun 2025 05:31:56 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=oG0mSPHl; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf13.hostedemail.com: domain of vivek.kasireddy@intel.com designates 198.175.65.16 as permitted sender) smtp.mailfrom=vivek.kasireddy@intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750224717; a=rsa-sha256; cv=none; b=wIBnQvDQ7XdfKQTXvQ6P4+D7FyEAxxkTiE4rX8hYPva/NPl4ZI7L8sKHPDzM4wanM4S79i l1j2eMQ6ypCFDD7UQZQHedEp/WFJssPh5MNBJvmJvjz9QoJknUM2Q4Fy1DF9dyrYkUHZDR xjQWji00oShmSQqqUTM17y6umtEm28k= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=oG0mSPHl; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf13.hostedemail.com: domain of vivek.kasireddy@intel.com designates 198.175.65.16 as permitted sender) smtp.mailfrom=vivek.kasireddy@intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1750224717; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=tz0RE7GnjmfEd/1LizBwT6CObnMCAkTW+iKDBhC1kS0=; b=yOG4VVcqEeXLg8owptoWvUhy7jf3eknSyRONgORs3o6o2MNE4RfH7auUjfa6dCtfHpjYJR hsxT+9hv8GwBilFoW1fJgiF1WBKAOYpnzVFVyaqk+RMsetK7/Ej1DNgqCyp3irvb/AArCT rwVANOtLERQGNTsdhP7gSCe/RJIkxhQ= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1750224717; x=1781760717; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=/FgyepksKQamByFxIQwQQroYIx5NJmNPynT6uogUlQQ=; b=oG0mSPHlYXMLHsAjNEpTi8WLM3tIXLzuHdo0HFP7dS0W73DWqOIfJkNM QPghSZW1G+NKeGcWEaiEg98xnYigk/5q3fPDKnxgnutTfE0JnHt2DSpLw 9+SpTB9LWgVLoK7IM53fA3UbORYPVNUN6q0nhKePhB+kWWfNIgbrfW8uB u2QlXTdwR5z3G3+afKhoASD15iwc9HfIRbAgGw1gl1KKneKolNC7C4Qqe oXFRLTbq+C58fO5Myi0a93nTGRPdLT20ry4CK2LlWISbdkNKEM5sFFeqm DinOijLvFftQXJpKV239nmX5G3bClYwBFbrkPD3cFwPGg2GuxcRnMXhIg A==; X-CSE-ConnectionGUID: 816CohE3TsyLPyULhZtD/w== X-CSE-MsgGUID: 65XNFo/rTYukiKOTjN53Nw== X-IronPort-AV: E=McAfee;i="6800,10657,11467"; a="52512887" X-IronPort-AV: E=Sophos;i="6.16,245,1744095600"; d="scan'208";a="52512887" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by orvoesa108.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Jun 2025 22:31:56 -0700 X-CSE-ConnectionGUID: HbXvy4m2QOSEuf3ehwZW7g== X-CSE-MsgGUID: JwTJlabjQQeP5UfsDcw9Gw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.16,245,1744095600"; d="scan'208";a="149206283" Received: from vkasired-desk2.fm.intel.com ([10.105.128.132]) by fmviesa006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Jun 2025 22:31:55 -0700 From: Vivek Kasireddy To: dri-devel@lists.freedesktop.org, linux-mm@kvack.org Cc: Vivek Kasireddy , syzbot+a504cb5bae4fe117ba94@syzkaller.appspotmail.com, Steve Sistare , Muchun Song , David Hildenbrand , Andrew Morton Subject: [PATCH] mm/hugetlb: Don't crash when allocating a folio if there are no resv Date: Tue, 17 Jun 2025 22:28:40 -0700 Message-ID: <20250618052840.1036164-1-vivek.kasireddy@intel.com> X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: A1FEF20008 X-Stat-Signature: hfu7mgpy9k8h13oupsef3ox5qwhop1tq X-Rspam-User: X-HE-Tag: 1750224716-251300 X-HE-Meta: U2FsdGVkX18SB7R7zyHW6Sr3+ZqQL3tjLBHLlzKMuR4wWk3Roe2z7Xn7t1fHXDvtCUZ1X14yQNdMyarTlqq/UvouGrV2c0eavmdr8v9LBA9qzV1t3wLEvsAQEHbaFygapyGdZD7DMoYvoECtIGcPuIe9ngKETBQ3r6HMvpY1Apd/46Nnig5NWZWjNOBZfwiW7iPB8b8CYCsslj1wDCO53XZRiz+Q/H1xUdeaCJUmWfBsazf+Rjo1u3+/eVpq//jHJET5yUrrc8Y7IQTyeWpwdZEDQ4vaVzKg9i9RL1KoJUp5BodD22m0ydRUa65IblY6qe6oPofwiNHJ4kcKQTOnH42QwReUZfquIhlMob/xWTIHdm7WGGiA2Yt6o3Ju2CCPHWjdKUQfU+mqD2legU2OphLyrRtURDreI3BHGx9XVd5nzfjc3arcoCZwMK1NyNqNtOKj6M+5UhKxgAskSU2eiC+RCU2fS06pp7by0dyGe2oEMZXCyEFk/gRgbilvyYCYb3+qy4bMbTvhtHqHVPdh6zmFGWRAcj5YcODXlVL4y82r63W9Df4JGG/SwQpqrsCzI7/moEIhuxE1He8a1ta4ZwNAHvsixj608Bk2K/xgKijSsnVlH23j8al9gavOizgN+nJDCMzrE+1lBKt9QMLbv8mS12v/UQnNFxFT6+djeggv+0CGW9jMG13N2tQP5GHfetBrjCs9q4sdnitI6ys/9YMOWCgIk4dbG2OK8oygWSVY7xWhNSwe6Qgc7pbbSJqmD62vh8OYA7U1/Iqmc+YUFFrUDXrkulcAljgyIrMVeEMiBLHKy8hcaLljG8adbFeaGD4hazx8LkNNVzeIUC8Mo4fOx50w9pOxaWdGdeGL9qB6kcNO1bftVTUzo8ITJ5kazjiQeiYxZbk/vNEBdEqNohjZZOXTz3odCu7RDUTAraKY84XtyJnSXrNGkh2G3+jgyfSxyNwpwSetcThA41l SPgk0/9A vZDixJ1gpqZ9vYCX1hdegfh73lILYb/e4E0gGYYM9G7jVqjDQ+uN1j+KnFfFFEkO3nY8R8NYdHITpRVdmWACAeeb9CHLMclSgV8hr9siWY+kwIV3h/BvbSyis9hK+z5oxh9XMstZ1DMQn+5blwegRDNAKQXNZJl2Uep+kP+uxj1Ss3DJROjCHX8FeQEPuQJ93Ewny/C4H0oBTBhWDAciZ299fZdRjrDIuwPmgEeWE+IGL4DA4JRISeOQUcmDNtJJGJPUPE4An3FHOJYdBge7Vsz2d8J3xAZmVCPjL2p17Rq6LgFNvbWXcbEg0egfauSP5ITLRoABQopaPxZ5hQx6tqUiviS/TMuJKEf4UxmG8JP3zW7myh9oEo14O9eb/t/G3+VUCFOoLWhmDGw8+AN9rzswOwCb36b9AHruWu+WFXvwDFBdz/orAKxbreKuOvpYJhIfK8lGi98LETSuyz29E3T+l4OEJalmY9oXUoV/Id4/fJb33SsH+AxMFkMhlBwDxZ91zR+0XRn8o9rSBirxWfLljtynTBmxzbqDl X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: There are cases when we try to pin a folio but discover that it has not been faulted-in. So, we try to allocate it in memfd_alloc_folio() but there is a chance that we might encounter a fatal crash/failure (VM_BUG_ON(!h->resv_huge_pages) in alloc_hugetlb_folio_reserve()) if there are no active reservations at that instant. This issue was reported by syzbot: kernel BUG at mm/hugetlb.c:2403! Oops: invalid opcode: 0000 [#1] PREEMPT SMP KASAN NOPTI CPU: 0 UID: 0 PID: 5315 Comm: syz.0.0 Not tainted 6.13.0-rc5-syzkaller-00161-g63676eefb7a0 #0 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014 RIP: 0010:alloc_hugetlb_folio_reserve+0xbc/0xc0 mm/hugetlb.c:2403 Code: 1f eb 05 e8 56 18 a0 ff 48 c7 c7 40 56 61 8e e8 ba 21 cc 09 4c 89 f0 5b 41 5c 41 5e 41 5f 5d c3 cc cc cc cc e8 35 18 a0 ff 90 <0f> 0b 66 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 f3 0f RSP: 0018:ffffc9000d3d77f8 EFLAGS: 00010087 RAX: ffffffff81ff6beb RBX: 0000000000000000 RCX: 0000000000100000 RDX: ffffc9000e51a000 RSI: 00000000000003ec RDI: 00000000000003ed RBP: 1ffffffff34810d9 R08: ffffffff81ff6ba3 R09: 1ffffd4000093005 R10: dffffc0000000000 R11: fffff94000093006 R12: dffffc0000000000 R13: dffffc0000000000 R14: ffffea0000498000 R15: ffffffff9a4086c8 FS: 00007f77ac12e6c0(0000) GS:ffff88801fc00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f77ab54b170 CR3: 0000000040b70000 CR4: 0000000000352ef0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: memfd_alloc_folio+0x1bd/0x370 mm/memfd.c:88 memfd_pin_folios+0xf10/0x1570 mm/gup.c:3750 udmabuf_pin_folios drivers/dma-buf/udmabuf.c:346 [inline] udmabuf_create+0x70e/0x10c0 drivers/dma-buf/udmabuf.c:443 udmabuf_ioctl_create drivers/dma-buf/udmabuf.c:495 [inline] udmabuf_ioctl+0x301/0x4e0 drivers/dma-buf/udmabuf.c:526 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:906 [inline] __se_sys_ioctl+0xf5/0x170 fs/ioctl.c:892 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f Therefore, prevent the above crash by replacing the VM_BUG_ON() with WARN_ON_ONCE() as there is no need to crash the system in this situation and instead we could just warn and fail the allocation. Fixes: 26a8ea80929c ("mm/hugetlb: fix memfd_pin_folios resv_huge_pages leak") Reported-by: syzbot+a504cb5bae4fe117ba94@syzkaller.appspotmail.com Closes: https://syzkaller.appspot.com/bug?extid=a504cb5bae4fe117ba94 Cc: Steve Sistare Cc: Muchun Song Cc: David Hildenbrand Cc: Andrew Morton Signed-off-by: Vivek Kasireddy --- mm/hugetlb.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 8746ed2fec13..f74c54ecf955 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -2340,12 +2340,15 @@ struct folio *alloc_hugetlb_folio_reserve(struct hstate *h, int preferred_nid, struct folio *folio; spin_lock_irq(&hugetlb_lock); + if (WARN_ON_ONCE(!h->resv_huge_pages)) { + spin_unlock_irq(&hugetlb_lock); + return NULL; + } + folio = dequeue_hugetlb_folio_nodemask(h, gfp_mask, preferred_nid, nmask); - if (folio) { - VM_BUG_ON(!h->resv_huge_pages); + if (folio) h->resv_huge_pages--; - } spin_unlock_irq(&hugetlb_lock); return folio; -- 2.49.0