From patchwork Wed Apr 9 19:54:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "T.J. Mercier" X-Patchwork-Id: 14045486 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 E42F6C36002 for ; Wed, 9 Apr 2025 19:55:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2A2756B0269; Wed, 9 Apr 2025 15:55:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 251BA6B026A; Wed, 9 Apr 2025 15:55:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 119C96B026B; Wed, 9 Apr 2025 15:55:02 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id ED9BA6B0269 for ; Wed, 9 Apr 2025 15:55:01 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 441961A143F for ; Wed, 9 Apr 2025 19:55:03 +0000 (UTC) X-FDA: 83315558886.10.201C217 Received: from mail-pf1-f202.google.com (mail-pf1-f202.google.com [209.85.210.202]) by imf17.hostedemail.com (Postfix) with ESMTP id 8F35240002 for ; Wed, 9 Apr 2025 19:55:01 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=Pfz917UY; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf17.hostedemail.com: domain of 3lND2ZwkKCFcI8B3G173G5DD5A3.1DBA7CJM-BB9Kz19.DG5@flex--tjmercier.bounces.google.com designates 209.85.210.202 as permitted sender) smtp.mailfrom=3lND2ZwkKCFcI8B3G173G5DD5A3.1DBA7CJM-BB9Kz19.DG5@flex--tjmercier.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744228501; 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-type:content-transfer-encoding:in-reply-to: references:dkim-signature; bh=0Cxlom7LaqSTPNZq2xmK4+ieYxW2eyaqpLd90fUc9Os=; b=luErYKvOd2oRjNyjI3ycdySJz9Ddsi1drjSSR0XIKFmN1pelkExmzboo2BN8N6w65X5WZX C2js49xYsNc0CSmkxRQkJRjnIvQdH8183d6Kc8/EnBjyFKkhmz9ZZoWlWbpNPFG/7y5pkM nFPlp7ig0pcS/fx+HUqbiEx1dAsuMGU= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=Pfz917UY; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf17.hostedemail.com: domain of 3lND2ZwkKCFcI8B3G173G5DD5A3.1DBA7CJM-BB9Kz19.DG5@flex--tjmercier.bounces.google.com designates 209.85.210.202 as permitted sender) smtp.mailfrom=3lND2ZwkKCFcI8B3G173G5DD5A3.1DBA7CJM-BB9Kz19.DG5@flex--tjmercier.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744228501; a=rsa-sha256; cv=none; b=NIcG2T7fRjhshF2SJJfFG6AwugE29xBCGodq5H6mK4QFfxrcfv/7Q5pI76q/dxz1CggaIr HCGEZ9EgpsacoUeji+7XSU+vKLrfHOW7FZJZYJPVRkBd6p/6WpTUa5/QqQLKaLkOMwLKKI R9y1f0ngia5vYclqMAP3gjAs69M8EUg= Received: by mail-pf1-f202.google.com with SMTP id d2e1a72fcca58-7395d07a3dcso255b3a.3 for ; Wed, 09 Apr 2025 12:55:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1744228500; x=1744833300; darn=kvack.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=0Cxlom7LaqSTPNZq2xmK4+ieYxW2eyaqpLd90fUc9Os=; b=Pfz917UYOPPPLrOqhbuhBUyN0prwKKqF4kEWR6e1ohfYtpfDcJu/5Q5JukWDElPSVQ hGbBwq6oup+qtnlha4yTDA2NWy2jRS2BeJ8y22zTGMlUnHOJ8N0J3kk6pBbEw51g1Rk7 jPJjb5znVDJQyhsNd/kDKwNPhU6DgcRpbeWYBRrG56roj35HwCPuhLbl0pNI7uGUVWYG laHf7WG6VWtr9yLEK1Q2gaPdj0Mode/Q0mFHU0WneJdW2DhoqYgiufovc6JHmbCF8f1g Pe0oXdeih7WiRXqVCzSmmCnvmZ+LLkkykGzd0EqbeeiQlH2x+Bzg8+e6MC4UirjRsd4F mKlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744228500; x=1744833300; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=0Cxlom7LaqSTPNZq2xmK4+ieYxW2eyaqpLd90fUc9Os=; b=OLjfEbZJxUy0AeZ71199adhWyMsgd++PCzNaG3kuzAdTaUKDqcXhx5bERO1hyWeD+9 qe5uhD4X4v/NtuKiPt+OGtmeKv55mDW3LttVabDqaEOqMUvv6tuIBKa0NJiptSpuER/X AemuY7LA+4SmgE5i9hk+5MCHcQur+qhPWaTscMh6kB0gRS9bRz4DCdDaKlvO5VhwFaIE ZbeuqSmfxR1FKNuLHM6odQuUdMiJDel22iXo1myke2JudIg3o/gXMkKq0J7VcgyqI9+C Ly9KExa0SfYRQ++iqFk9TkyzKiDG8XeI/XJR8nSzCLtmrlQdb9nD2h6axS8IOJrwUeKH tcyQ== X-Forwarded-Encrypted: i=1; AJvYcCU1AbqyNPNtqF49f7Lmx8QBHwQdr7RsM82D5M1EKrxb8pdwhlnl9J9kCcpjW2/qEzv1UdCzwSO/MA==@kvack.org X-Gm-Message-State: AOJu0YyAhlT6b+O00LGnF1fCtTixRckpirT70VDgX5snp3tds0QO9fgv jxgy4IVr85TGuMSrTSiCbXGYyWcY+fPX1v8sveqCSZY0ydQW3QSHfqRmOepJfUHzEAN8NqfyeZm U5u3M9IV0hsCKEg== X-Google-Smtp-Source: AGHT+IE+v/JVOzdWcyI0nV5rZ7/P1D+Fevt3cx+6ulg9GOA2p6sFNANwQH15D7aywnU+YXm3dQlH5ywEzddm+mE= X-Received: from pfix12.prod.google.com ([2002:aa7:9a8c:0:b0:736:86e0:8dee]) (user=tjmercier job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:7287:b0:1fe:5e67:21af with SMTP id adf61e73a8af0-201695c7b73mr609078637.30.1744228500266; Wed, 09 Apr 2025 12:55:00 -0700 (PDT) Date: Wed, 9 Apr 2025 19:54:47 +0000 Mime-Version: 1.0 X-Mailer: git-send-email 2.49.0.504.g3bcea36a83-goog Message-ID: <20250409195448.3697351-1-tjmercier@google.com> Subject: [PATCH] alloc_tag: Handle incomplete bulk allocations in vm_module_tags_populate From: "T.J. Mercier" To: Suren Baghdasaryan , Kent Overstreet , Andrew Morton Cc: "T.J. Mercier" , Janghyuck Kim , linux-mm@kvack.org, linux-kernel@vger.kernel.org X-Rspamd-Server: rspam01 X-Stat-Signature: cphkgbb9zq8o8ooymt4rk436x6j11siw X-Rspam-User: X-Rspamd-Queue-Id: 8F35240002 X-HE-Tag: 1744228501-975398 X-HE-Meta: U2FsdGVkX19BT85iE67ki9B0ezwdHkq+8p+o3Qau2FLpXi2H6A2KzLu7PunsGX5xMiK8pjZIeO3dqOipRJf2ZtGzLSfEFfUCGYOgnZe0OFFaFnhjmwEAZK8alHgAi10Ycux0qkNdFtzAFZAquB6YpstUne79f3AY99lfWD6XQa6lsW9tMvjnTPZG3DxgNLYFh7xTx42CzaouDtXSVwpflfyH6iQAgOz0cw4hbWznGsnU+FPgZ2KhiN1xVmaMzdnDbe4GxjgvniAAHFWFjF6DHcJ5Dm+2BxRqEHCwkBdFp+hTcqgMJ/P/9UU8PzZEVhDKYcFztBTA5vxdsDLfhTYMoSrouoECMNyH9BiRSwxNYlL65pCCKnitFmHWkLZJ6R27LnDA28Pw3Q/+gRCzpc+WoaQEBGix1+cefQh69qhhYTyur9ZqwFIk8pVo5OX4z4m3eRN4UdnA0SHOQVR8oTTLitQ2Xm0dS7rpEqeI8mFkkG1ouV1pOVIqIkNSaEG+hr9ix4gsMcLjdBJeymnO3Q6mcp5e/DaKsm3EMRG2RtRwEIZjwtLDZVmpZ4B0c5A5U+AQzBtLVXMU1cpyVYZ59MDr3k6EFTNu7sj0aHfNUoRG89Q7lwemsHTlNwm3cpgOqsqUlb/GW8upmA4UqMS7dg6cs6UNuYVHI+REFlnDD7Vc50HOcfZgc9PnmpFB06cf3LLX/O+XwO/2usv9LkH8BoHKuq4rXy0Efd2JTnx04BMv3kbrhfy+pTno4csag2GcfKO515fhxURH5apLPk3u9DLLKt10gERaxrzTAU4QrMzDjB0hbcs7bTFCpDiO7DDKqAtqqJAfScFId03oIJf8vYg8BQzt3zR32sZFYkKXSrghvtxRD72S/k0hpDbp6n4ybsF0iiXJ2yfZcf98VuVHZuItU51DFG/+FbO7KSZgxgQGhB0Xb8BgNhhJZCgeIcAAjz/G4BadldDG34B/3MFdTXe c3sKHHAZ M1AEZx5w6yvyLg/PDc7qEo9sHcxc9pe6CnBCjsZtNbjweWVJy1x7IuauKpDyfAYkIaXyoGUWVKJPVzeiSZci9bx6uneps8/GDGMcjFP39y0nSwwHK/XGbKG8FdRwpl1OOwORdDzxGt/oge2eNI+YWOfqKOWeLJwc3CDo0zbbVZGg+6k/tCDsmIeULkXB2SF+ZLuMEmImbVFYsJ5jdJhswFaEJ46IUdWD5LRHIw5ShTGWxGyQ+1L8DJK+5ks3EnzlhRNV2X8qC5kUimK3eRwHuqmtrf4d+vXbDUjajhq1yuXgJ9iMp1FU9V3OZ8jNwPJvv6kJWo9SGjLbNuDoNqMwFC9WPjIA8zzz51/CPPrvET0SU0Anf5VP4EQSQnuzwNI7YLJQopjXXaODQ+WGUJxtZdcaYkiui9a+JR7Jo3D+y5Zh3+MiKbpQ3n/KSOEnfTZmT0PYDG5Dpk/4hlDGrbmtl5rm13g4hkJjm35e/QJ2B9DoD1nRYhQoETR5vwjs6gtIq8rRFlx3AQzwVI5mskxDpEUCrke9Euze5Vu5tqJ92ySpxawqQw2RMzqMyp2+GcDUM4es616S9hyejuyM4UDSP9m99cTZ9z2/Ic55kItIE4qhn0PNf+9206CrQx7cI3WdL9fQ0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.001277, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: alloc_pages_bulk_node may partially succeed and allocate fewer than the requested nr_pages. There are several conditions under which this can occur, but we have encountered the case where CONFIG_PAGE_OWNER is enabled causing all bulk allocations to always fallback to single page allocations due to commit 187ad460b841 ("mm/page_alloc: avoid page allocator recursion with pagesets.lock held"). Currently vm_module_tags_populate immediately fails when alloc_pages_bulk_node returns fewer than the requested number of pages. This patch causes vm_module_tags_populate to retry bulk allocations for the remaining memory instead. Reported-by: Janghyuck Kim Signed-off-by: T.J. Mercier Acked-by: Suren Baghdasaryan --- lib/alloc_tag.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/alloc_tag.c b/lib/alloc_tag.c index 1d893e313614..25ecc1334b67 100644 --- a/lib/alloc_tag.c +++ b/lib/alloc_tag.c @@ -422,11 +422,20 @@ static int vm_module_tags_populate(void) unsigned long old_shadow_end = ALIGN(phys_end, MODULE_ALIGN); unsigned long new_shadow_end = ALIGN(new_end, MODULE_ALIGN); unsigned long more_pages; - unsigned long nr; + unsigned long nr = 0; more_pages = ALIGN(new_end - phys_end, PAGE_SIZE) >> PAGE_SHIFT; - nr = alloc_pages_bulk_node(GFP_KERNEL | __GFP_NOWARN, - NUMA_NO_NODE, more_pages, next_page); + while (nr < more_pages) { + unsigned long allocated; + + allocated = alloc_pages_bulk_node(GFP_KERNEL | __GFP_NOWARN, + NUMA_NO_NODE, more_pages - nr, next_page + nr); + + if (!allocated) + break; + nr += allocated; + } + if (nr < more_pages || vmap_pages_range(phys_end, phys_end + (nr << PAGE_SHIFT), PAGE_KERNEL, next_page, PAGE_SHIFT) < 0) {