From patchwork Wed Apr 9 22:51:11 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: 14045641 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 AB6E6C36002 for ; Wed, 9 Apr 2025 22:51:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 36D8E2800B1; Wed, 9 Apr 2025 18:51:16 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 31AE82800AF; Wed, 9 Apr 2025 18:51:16 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2098F2800B1; Wed, 9 Apr 2025 18:51:16 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 02F142800AF for ; Wed, 9 Apr 2025 18:51:15 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 69DC2121557 for ; Wed, 9 Apr 2025 22:51:17 +0000 (UTC) X-FDA: 83316002994.26.A1303D9 Received: from mail-pf1-f202.google.com (mail-pf1-f202.google.com [209.85.210.202]) by imf24.hostedemail.com (Postfix) with ESMTP id 910E4180007 for ; Wed, 9 Apr 2025 22:51:15 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=SPooowmc; spf=pass (imf24.hostedemail.com: domain of 34vn2ZwkKCPcsildqbhdqfnnfkd.bnlkhmtw-lljuZbj.nqf@flex--tjmercier.bounces.google.com designates 209.85.210.202 as permitted sender) smtp.mailfrom=34vn2ZwkKCPcsildqbhdqfnnfkd.bnlkhmtw-lljuZbj.nqf@flex--tjmercier.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744239075; 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=QZ/B0L4XT9ckYcnWqWd+FYUUzdafyMad+IsfhzlV93I=; b=RWKR7pDA2935vSyb8MCcsm30o1tZMfxDFk1BQI1rVgIbXnrIiey9nNOUDQMj14IRxAEm15 uqHODqUIhG0mBK2PnDUYiQ3kLd4d78+/oSmjxhUvao+LDnVLCT4BMIHhN+xM5wBy/4anVJ ocHGndgCale2eo1XWBEXaG2jxHB8tXs= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=SPooowmc; spf=pass (imf24.hostedemail.com: domain of 34vn2ZwkKCPcsildqbhdqfnnfkd.bnlkhmtw-lljuZbj.nqf@flex--tjmercier.bounces.google.com designates 209.85.210.202 as permitted sender) smtp.mailfrom=34vn2ZwkKCPcsildqbhdqfnnfkd.bnlkhmtw-lljuZbj.nqf@flex--tjmercier.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744239075; a=rsa-sha256; cv=none; b=KkG4EY7r5UNOBv81bEpCxkRch1enKF9wKQwEtL4PN7IbHti8JDZhFJ5h+kU7tyliYGidnX 96Rf8mORgLpPq8WLp3IRYXbndAvfLApIdvg74P3M/ZNTfNZQYCERmW64J7rdJfRJ38/yrt eKkZqzqWQf1Tw/BJ8bEdqInkFyyUNXk= Received: by mail-pf1-f202.google.com with SMTP id d2e1a72fcca58-7369b559169so95715b3a.1 for ; Wed, 09 Apr 2025 15:51:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1744239074; x=1744843874; darn=kvack.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=QZ/B0L4XT9ckYcnWqWd+FYUUzdafyMad+IsfhzlV93I=; b=SPooowmcaQXXFsykELiDBbKx+BcM/pfGtselCy/eR1i6BJFDRE3BM/FwC90VhgyN5c ELFmTi4hGifL+n+pozhNBniM+P/X2gRzFeBJ2/nPUSJoexvaJxZYi3k9JP4QGqV3pTzB aDlvBn9GtbCzMmQMbS3YQQggwUaoEzroiActMx/U8n2It5mmAMV7EpNPhJmM0MIUOv3y YgpKFtSBZFX8yHLhAv9K2WyZT2mFQQSKDWIb4zFHC1dPTTivkIRcUMci07deuwYj3K/d Ith0ME56K2zRbrGdi61Z/wPPmdL8O1zlKtdoDkE2PrqEJHtzb+pB9gNrPOnzuR6XPM+0 +/UA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744239074; x=1744843874; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=QZ/B0L4XT9ckYcnWqWd+FYUUzdafyMad+IsfhzlV93I=; b=AGq8L8/2jldj0IBhQimC/WH0s7V1zUBY8GRz7huLULbkCCt/NTuZrASiyyxHQdxROR /+jFWzl68OLZJWj7/IHQ9S4bFGL1pE7mG8VyOVZ42Z6+bIhmkMWl2BxipaThSssXsq05 VA9mqs+wrH/BC9Ua8uvEgeGE92r3EluKqKQNrffRtYwyvo5rJKSXncxURyqjSoCiOJ2k j+bpW9/w6hvbK7UanQHRnByfcLtiMqggriI3C4EEwPgGz70Ef8w0PJHUue3BtjINEATf wY8z2/UuESLAaG0BGvhGTd7dNMgooFmLEQm+B9zgC87gjcgv76uqRkOGq5DDbUrKJKxN WBZg== X-Forwarded-Encrypted: i=1; AJvYcCXYUUpKyYwFfyfY3AoU6AMb85SifYtC9xIeIW2wImjye6NYISEDHBy1a7SC5d7gD22/Wcq6JBFRTQ==@kvack.org X-Gm-Message-State: AOJu0YykH3dITkco/vx5CnkrnoiLWdPzvGa1649AMk00mSLpFAb3u5li 30DtP5N2f44ehGalz7kTCFrSzLUBstx4Z7rh58YSPEYs2Tbf2jGPO+I0vwjQN9CAqYUTuUSXX9M 3BPcijNqo6HLhQQ== X-Google-Smtp-Source: AGHT+IF30TW5whnI4CSUwU1CGW/+/3jw3T0xQadcX1hhvsgA4bTndeNNWjh+nPIxuL0NprAJAPVI2q+EqQWyi1o= X-Received: from pfblr31.prod.google.com ([2002:a05:6a00:739f:b0:739:9e9:feea]) (user=tjmercier job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:3908:b0:725:96f2:9e63 with SMTP id d2e1a72fcca58-73bbef81e6emr885624b3a.24.1744239074384; Wed, 09 Apr 2025 15:51:14 -0700 (PDT) Date: Wed, 9 Apr 2025 22:51:11 +0000 Mime-Version: 1.0 X-Mailer: git-send-email 2.49.0.504.g3bcea36a83-goog Message-ID: <20250409225111.3770347-1-tjmercier@google.com> Subject: [PATCH v2] alloc_tag: handle incomplete bulk allocations in vm_module_tags_populate From: "T.J. Mercier" To: surenb@google.com, kent.overstreet@linux.dev, akpm@linux-foundation.org Cc: janghyuck.kim@samsung.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, "T.J. Mercier" X-Rspamd-Queue-Id: 910E4180007 X-Rspamd-Server: rspam05 X-Rspam-User: X-Stat-Signature: nu1pkqtaqkj8sqix77odxuoxj4x8pogs X-HE-Tag: 1744239075-429333 X-HE-Meta: U2FsdGVkX1/jwK9MQT2+1BqdEx+c9zlkewX/5RP0CJn/unn74LxUoPPRjpuuYE87yqRc0ZDQMMR9Dqmicpw+rD73fcY3LZYc9jCDYwTAoEjp4TvS4A/bkE4vUSYP3H0bxapVCFyt3jbC8ez86PjyUb1JBBrZoNEBAMlds89qeSoJAxbfEVHJtifd4wuBJZmKCBLp9lQ/uPPKEujAqeHIiO7y/EQhlL+kJmmulf+88qyjUye2j18jI5pwEyFs6InBDPyuMdipEWtH6HQn0fR4uUowq47cVxqrnHdoEjTmSqa4Ntf1p74+To0dBncttKqc6fzXuQcTYaAGipKi0hLdhB+0jLyuPgKskcq2gKJI03KNzUlW3FoSdb6xbsDYi+Ph8FFTZF6aQvMbHtPA0QOdDARYRGFrrjmpiAl3VbU/G/ROBbmkbI5LSwmmfk1r96SKOWesPvxF3ySHUGe6DjHRaLN+MjA4tYvsDYskw78Y6cVPC/RF1lq9g+f1hxZcsqRsPZhQyJbfH8O7C9ypfPtX7ZVu3qxOA2l6rzj6ByUOKbD1lWFGrEvz/n4cYhxRZyK1qYBSin3RcUWJyhnUoEd547dA5tp0++dqyd+5aoXBLxf2vcdVmx8tUHDJAL+pLwIInUcX2Mi9vbpg+XZ/+SUNwNPCB2b4nohs7jk38vQUJeYAXmHROWv1LdgsPkiscOjlE+51ZB29C3pvz/rT2zZlrXWRh43Lkzcs0y5maZDUaKFBLr7SDeMmIQ0KlWBrmkimUqCw0njrLLYRocNd4cHjY0AzK4XFlgl/MXWAVWZuvjain+B836sKym6vClYknJjnFjoj+/I/1biGghCrr/Gb0pF+PmLgBapKt3MtttmOFPYg/j1MJ683lY+VoHVFCU2S9cqiV1cUiTuwu0kbEX0Suka4ZzGies9vxe074bFQSYFNeuzSscS37jBHOuSRSRjHTA563G/5MEJ+E9Mx+83 47Mo2VBt lui7LHIE5EZbOrmugmrk5l99dfs966gL1tk/U8X0E2IgGrynZHJqAzooJ/bG8hPrjJb2I1SoVrmGTf3KaDEw04/tGpvnkYogSPpZTwo/2Fzohwk7/IEstq940OKh/dz8LOJYHIdg8RYKSwIjZrGrVsTZ+udOMy4QSVZAGgsJ/NkuMyuPUZLB3xY4obR0zvYUNhc/3pNTvWmy3Wa+uQOR5W1H1nTY35TR5UVIJ/KhwunLm0CalHTU4fCfgyAMdAhyfn1d7K5n16b6RzsS65/CWsHXcpaDwLsQo6Y8UmXuZtxcsOZIbb7nV8bRS9Vib0TGSmeBRCHRbNg2BqAA5HfgIr+TSOGPrPgmP5n3bxYBN6D4ZCWSj0jTXT2Z61W8d8nRVKfIBN0L8qu1HVox5LMKA0MMBvD+Rvhnwc5L1eoM6hKs0EFj4rYQlEUXTFLmNVbbbX58Riixhpfdh9qA1yAedlx4Dq30LCZjDUrd5GAM9lolp5TicY59/e8TstQcv/+gkG4NngBixpWQZJDeS1Lf/20q6p/hHSeqoo3CoirsCxvyruJYkGijowsGY08h5bd5HAuANnK8BaHFqDqgITBF++K+TBQKKsIF70zkGzBnTmGoK8it4U7qHsDcaxonXX/N3hVU3 X-Bogosity: Ham, tests=bogofilter, spamicity=0.025012, 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. When this happens memory allocation profiling gets disabled, for example [ 14.297583] [9: modprobe: 465] Failed to allocate memory for allocation tags in the module scsc_wlan. Memory allocation profiling is disabled! [ 14.299339] [9: modprobe: 465] modprobe: Failed to insmod '/vendor/lib/modules/scsc_wlan.ko' with args '': Out of memory This patch causes vm_module_tags_populate to retry bulk allocations for the remaining memory instead of failing immediately which will avoid the disablement of memory allocation profiling. Reported-by: Janghyuck Kim Fixes: 0f9b685626da ("alloc_tag: populate memory for module tags as needed") 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) {