From nobody Sat Feb 7 19:08:23 2026 Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) (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 3E3162D94B8 for ; Tue, 7 Oct 2025 12:20:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759839644; cv=none; b=Cqrv7EIem/UvIRh4RSp85DGFzF0CVKbl5jRdQHbzGr2ZSd1aaOzD111P29bUah24sHnwcd9koCAOxP86BSuomGbE8oA8NT/dvWM9cxLRVlbdfjPvdhA2Owe+cREexwQx/h5noWdD0sh2yRRLhoyy0rv4BG7RSa58jmnADplxzb8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759839644; c=relaxed/simple; bh=997qQQu2kGJpN3V77byc+mN3wx8H8MkzOoZfy80SWDk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LKFIoRJM6MDL2HdAkCQV+rvGY9aeQOKmfYHvVzUe+QLiqJWS1EqyhXfLO0O+xwDMidoKWe/+z5PvB6OIt7g6flqxh0nKHATU6lpz25anI8lhQYMoUdIULHnvwiDJyPcB3ho0PcpPtFSGvaCZLTjK5AG/hCa0nJQmA7ylPZ9OtVw= 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=AqyI/UpF; arc=none smtp.client-ip=209.85.167.47 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="AqyI/UpF" Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-57d8ff3944dso7635516e87.3 for ; Tue, 07 Oct 2025 05:20:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1759839640; x=1760444440; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6fNdEfsbjEkSdVOKy7pPxlOS+w8ubFh5YKBkVpFvsGU=; b=AqyI/UpFesJp4yNQJoqI67p2tNT7r2wL9FdV4wDRq50PgI5oFrLAHahfs9Cp0yACfc AmWa383J1e8u0ayfrCsw/ipp2IibzR6Fnt6GM28tn37b1i3qBrLwjS1mVmM6DZOcbzDf sQCT3BxeuUwFtKv7zPJv3GoofwnZEV826pL/N63C2b7ZBC/eRq6d4Xr7CD00xYFyqs1N F95TaB38+fzaG5nADBNvz/cR5y5dPGhHpc4id2WtZA9L4aJfUczrw6wABbzZ6FBAj0lB NL18PYsKK+K3CAGzs/FkRZOPl7PDROhO5UEhOQD5k0ckclaoT1Zv87jke/waLdV025Q0 nydA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759839640; x=1760444440; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6fNdEfsbjEkSdVOKy7pPxlOS+w8ubFh5YKBkVpFvsGU=; b=nFOknFeMclA8OlmSfl9psydQKWnQkqjzwKztIJEZxgQCgMkwGcqnyjNXf8UbfZLrkK LLfBm6ebqbE0CbqXwx9li9oXKH1VhzJmGyFjZG5ho4EpNZOy7WYrzD27wvCCIGjle34a 0KE7kORoI7qbKcK+QWtWcEj8BbqjwJRJMgDpgxJRAwy//GxYuazPWYhT7IlByBbBroMG pRtN/1pMXfiHfPdl+im4RYBR18bxgXdI3zZJst2Lstt3IRs+Qk5K6FYEF3RQ4oEY6KZS X+rhCeMjSo+KxG1F0IniYeRNeqJ9fL7ia6GA0E69gUpjazR91+v43glWJc6tkOZu6mxz 09Dw== X-Forwarded-Encrypted: i=1; AJvYcCXnTAfus2zBEQawWrO9p7klclHziy6Qi17l2MDRWO6WaCu+sBo9Dk9UGV1xgmpjT5eBvNXCI4rATqNzqHE=@vger.kernel.org X-Gm-Message-State: AOJu0YzJOnh1/BMPOnIv1gDbBc+djdCFSf6XXhVWKtBNxzU+Dr/HkGFm uokvI8c93gIsqEGOL7fe/fcBfEaDs/5qhOvv64vgUPtM3gx1uEFJaECN X-Gm-Gg: ASbGncs6uZopOFK7yNhGb8LRNNfUvIUsDQ0vTijsa28Fjxm9b56JXavdS5GTE1w8Sf+ oW8NAe3toEFIeNebqGsSD4mElcbYUVF8pdIikk/az+UJnhl8TvddAFguSm5OIbqCTmGCeofeeRt +8uFZnoaJRBYjYgWww9YIHwnXemsJg4447UwhwXM9zzHEKwLppOLg2nhIucCpTRlw5amPNCbyBB wC9imxITmY26EaSXOpuF221DbeSCx5XRAWf0Arr2ZOH3/O69k93l5R3YdU7L0p8/R8bgE1pwiD7 zXZls6wkOxPGd7Xjfwhrb6aDqe5h5/TsGwqJAVG7JSVK6P81Mz2PwZIET5Zpd4g80ldk7Og/dVM KJha4TPOGkhPSQnvSRYanghe1ajsjqNyVeeSPyd3i X-Google-Smtp-Source: AGHT+IEiEq8/PRMLU22U8tMd2sr9kO2YecTFI/gyGlkW1+LEry1NgULscngcTZ0ZEHQCDOWqZ/Rlig== X-Received: by 2002:a05:6512:23aa:b0:587:7f2d:2577 with SMTP id 2adb3069b0e04-58cbc39a817mr5138049e87.43.1759839640112; Tue, 07 Oct 2025 05:20:40 -0700 (PDT) Received: from localhost.localdomain ([2001:9b1:d5a0:a500::24b]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-58b01141151sm6061947e87.59.2025.10.07.05.20.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 05:20:39 -0700 (PDT) From: "Uladzislau Rezki (Sony)" To: linux-mm@kvack.org, Andrew Morton Cc: Michal Hocko , Baoquan He , LKML , Uladzislau Rezki Subject: [PATCH v4 01/10] lib/test_vmalloc: add no_block_alloc_test case Date: Tue, 7 Oct 2025 14:20:26 +0200 Message-ID: <20251007122035.56347-2-urezki@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251007122035.56347-1-urezki@gmail.com> References: <20251007122035.56347-1-urezki@gmail.com> 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" Introduce a new test case "no_block_alloc_test" that verifies non-blocking allocations using __vmalloc() with GFP_ATOMIC and GFP_NOWAIT flags. It is recommended to build kernel with CONFIG_DEBUG_ATOMIC_SLEEP enabled to help catch "sleeping while atomic" issues. This test ensures that memory allocation logic under atomic constraints does not inadvertently sleep. Signed-off-by: Uladzislau Rezki (Sony) --- lib/test_vmalloc.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/lib/test_vmalloc.c b/lib/test_vmalloc.c index 2815658ccc37..aae5f4910aff 100644 --- a/lib/test_vmalloc.c +++ b/lib/test_vmalloc.c @@ -54,6 +54,7 @@ __param(int, run_test_mask, 7, "\t\tid: 256, name: kvfree_rcu_1_arg_vmalloc_test\n" "\t\tid: 512, name: kvfree_rcu_2_arg_vmalloc_test\n" "\t\tid: 1024, name: vm_map_ram_test\n" + "\t\tid: 2048, name: no_block_alloc_test\n" /* Add a new test case description here. */ ); =20 @@ -283,6 +284,30 @@ static int fix_size_alloc_test(void) return 0; } =20 +static int no_block_alloc_test(void) +{ + void *ptr; + int i; + + for (i =3D 0; i < test_loop_count; i++) { + bool use_atomic =3D !!(get_random_u8() % 2); + gfp_t gfp =3D use_atomic ? GFP_ATOMIC : GFP_NOWAIT; + unsigned long size =3D (nr_pages > 0 ? nr_pages : 1) * PAGE_SIZE; + + preempt_disable(); + ptr =3D __vmalloc(size, gfp); + preempt_enable(); + + if (!ptr) + return -1; + + *((__u8 *)ptr) =3D 0; + vfree(ptr); + } + + return 0; +} + static int pcpu_alloc_test(void) { @@ -411,6 +436,7 @@ static struct test_case_desc test_case_array[] =3D { { "kvfree_rcu_1_arg_vmalloc_test", kvfree_rcu_1_arg_vmalloc_test, }, { "kvfree_rcu_2_arg_vmalloc_test", kvfree_rcu_2_arg_vmalloc_test, }, { "vm_map_ram_test", vm_map_ram_test, }, + { "no_block_alloc_test", no_block_alloc_test, true }, /* Add a new test case here. */ }; =20 --=20 2.47.3 From nobody Sat Feb 7 19:08:23 2026 Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) (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 4A33A2DC764 for ; Tue, 7 Oct 2025 12:20:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759839645; cv=none; b=BEDnDHdAFe+z5wHcD06DMOsXOXfe0CHAI0PRTEOFqDnCnfC0DqsEAcJ34+CQ3xcjzyk0blrMgwTAnV2eW/zF5332zlRR+gwuw3coKSU1DMMfJsbQsLa855vrG58yphUaXHXbVbX8PmfXxC1VsdHzEmDnIU83b5gFi94GGf2LCNM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759839645; c=relaxed/simple; bh=Cid1o0yI6anA0oMjfZ5dvYwhgQOAZ2ZDCkuXoquLJSw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iG7rdo0XZKQkkRoenwojs8/1UtJDZXIleTFKChibV4INZIluzI+0K/XEL8gjhtKYKQC0kQbuZAoEmJjCDosEM5RFlovCwK45alSsqHR/rDCG8CKr7LsMAZSol/oVu1eNaocDsjHon5bURTFTBaVr6TNboMkZNLxRm2BD8FmEXKs= 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=FdeBzqQ9; arc=none smtp.client-ip=209.85.167.53 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="FdeBzqQ9" Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-58afb2f42e3so7376952e87.2 for ; Tue, 07 Oct 2025 05:20:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1759839641; x=1760444441; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=d4jfcSPGUvol/n8ObJSFwltbXIiILhsqpfoN+DLL7zw=; b=FdeBzqQ9hNnPYmgREQPeF8w8ypy4R9uCTr7++7HLMvvnnolexebWJiCbMaAPtgTaqf ViDj4DRV9yB4j2n55iRl2F1Ask2F7ezeV04HCbD7Gxlz8DTvpOWrRnf+nn4HbkFW4o69 ibhZ4iZiLSmXF7WfCUTQ7dzSfCme5gbx7E1LD/rUyNp1hlg5aCPNC3tSeW0+ZDYROFLf ruFuT21FfYMAUaVkxTp//fmIENaKmpAOOWXMPhAlrx99LbdLozWFcyi9onXDTPWSuXDO FItJbKteGZoz7EMg77KLg8Drqu1TMuiFC1SOp/qRQCsYE6yfW7Wm/ib+Q+XF49e7ls2/ fixw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759839641; x=1760444441; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=d4jfcSPGUvol/n8ObJSFwltbXIiILhsqpfoN+DLL7zw=; b=cROgELhJ4776Ny2a53wjnPnQ8NmsKL4bIeO+yzd1Tsrw2RsmDsrHELzvEZAm7TmyRM XxXXlDPYBPG75e3MAdHdPrnHA8bYCK5H6LUODuRBA70SlqfnDMiPoC9crYlHaRlwHnT4 vnc0GYhmufb9BtZY2VGo9laGnIVhusQx2gaurX4I0Mmxs64J6LvCytypzNemIJfN3hyl 8iIUW35JveqT3Pa4BP502pf+uGeliTotEqo/zoMD0DlSgI8r6xVNiQ7N7JwcBMcct1aW 5n2kvKI1Y+qV+xHP1ArRxHZZXNfsRscwO06P54z/tKWOLIr0jqjLDyj1WdyScPfUwD6Z yAqg== X-Forwarded-Encrypted: i=1; AJvYcCX6TdoOPaDkR4vRESGU4L7OeQ++mFMvHr/KXvu1dtB1E5Y/X/YihQ83DBS4XQq+z7P84qrkQqb5xrUYfHw=@vger.kernel.org X-Gm-Message-State: AOJu0Yy4JDsWe46qylJgt0FfCVpIb+fR73xFQg4o5b/cv9ofaY4oXuxz znTD4c/eidcnG0BvcOKJy7hOqU6nnO7GMe4+IuLUmvJC8v5ymAdnAfEq X-Gm-Gg: ASbGncsWBrHhBy+n+55LDTx7Dfmzy6e5lQwP5LCYcUXnBV3zMIqtCpWgO43eoGxzqN4 7yLFILtoGD79dcvtGuL7gRfZGwD8BENk1dHgR0ojZ+DhuL11by0chQviv9QMhJCGc6OVuivv8Ah gkTT62MIPqFljwyO2N5iAUbl/jGCDTq6PV9VyvtpT9SQzH3U1toSJzaHu7bh6+S4YOyUvDajwU8 UMPR2h9BdM+nIKwkId25edW64ltbB1tlvcQFgyYRX59a0IDuoOIw+QaHmMlMlzgoerRzrPmxamf 0Q0pID0IXidPsa8I3yHXYhivclK0xBhWWyS+/PtKTaJ3RWVUp0NvB5FXgQYF71PeFk0i/VoRdBn e3Yui4dI6DUmNspTivHE0OQnE2XeP5DVijs9+at7G X-Google-Smtp-Source: AGHT+IEQc2WJmMkAe6iyXzpSe8lZAqYIAKitVP6umZ8/QxBxHKvKILqVKMjkHlA4N1ux2dZmJgZAQA== X-Received: by 2002:a05:6512:230c:b0:56c:386b:9bc with SMTP id 2adb3069b0e04-58cb956bb11mr4722043e87.5.1759839641188; Tue, 07 Oct 2025 05:20:41 -0700 (PDT) Received: from localhost.localdomain ([2001:9b1:d5a0:a500::24b]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-58b01141151sm6061947e87.59.2025.10.07.05.20.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 05:20:40 -0700 (PDT) From: "Uladzislau Rezki (Sony)" To: linux-mm@kvack.org, Andrew Morton Cc: Michal Hocko , Baoquan He , LKML , Uladzislau Rezki Subject: [PATCH v4 02/10] lib/test_vmalloc: Remove xfail condition check Date: Tue, 7 Oct 2025 14:20:27 +0200 Message-ID: <20251007122035.56347-3-urezki@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251007122035.56347-1-urezki@gmail.com> References: <20251007122035.56347-1-urezki@gmail.com> 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" A test marked with "xfail =3D true" is expected to fail but that does not mean it is predetermined to fail. Remove "xfail" condition check for tests which pass successfully. Signed-off-by: Uladzislau Rezki (Sony) --- lib/test_vmalloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/test_vmalloc.c b/lib/test_vmalloc.c index aae5f4910aff..6521c05c7816 100644 --- a/lib/test_vmalloc.c +++ b/lib/test_vmalloc.c @@ -500,7 +500,7 @@ static int test_func(void *private) for (j =3D 0; j < test_repeat_count; j++) { ret =3D test_case_array[index].test_func(); =20 - if (!ret && !test_case_array[index].xfail) + if (!ret) t->data[index].test_passed++; else if (ret && test_case_array[index].xfail) t->data[index].test_xfailed++; --=20 2.47.3 From nobody Sat Feb 7 19:08:23 2026 Received: from mail-lf1-f43.google.com (mail-lf1-f43.google.com [209.85.167.43]) (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 7EA302DCF7C for ; Tue, 7 Oct 2025 12:20:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759839646; cv=none; b=abHLFuWWdjolWLm8IVU7cJq046nNaZ6/3SPdgJWW6evsDJpVLokQOHRTC4um6W5IsLnIOsBE6JZifRctFPKbRcoWlWB4f1mYFFJJZwZVz8QpCRAXk8Ug8l/In2BaReqr8Fh2w8bTyPwcfmHRvyUnc40i01pt/xrcFS+D5ToaxzE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759839646; c=relaxed/simple; bh=5tzWNyU3AXYCEpPLT5aXRk5UxMX97n5L3bxKGpOPArE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=C7JobAbJgj+v4F7IkZ2ARUu8niot5CYWyIbvaak2J+7NsHuXAZ7ITg//GRRfxkHDCD1F9dnjpH6OihizwocApBchdiJVOaZbF1uSLLlBSRrk76XEbEpkoWQwmRIwTswX33rgv7/sl7KTVIlRMyX8yEPyOIxdxQHUNSNwYqGTxZY= 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=ApeA/hHN; arc=none smtp.client-ip=209.85.167.43 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="ApeA/hHN" Received: by mail-lf1-f43.google.com with SMTP id 2adb3069b0e04-59052926cf9so2148244e87.1 for ; Tue, 07 Oct 2025 05:20:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1759839643; x=1760444443; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=aTAgJkdvXfIYVJGWt9rTo9DrGAL0rL30tXGrZW/Q/UA=; b=ApeA/hHNCPttxnm5fCwmYBtXL/7Wg2uYIivIqfiEWD6wjK8qVMiHkMXrFa+23dBcn/ ysLphB996Vvw2oCU2xeoA4W53CrpLGD9peef3l6fEuTlPDEJt6JKubh+h2n5NhsXy+ml 4gYTEBxdRaD4VazKBZJYcyITFHmAWK5d96wvypFhhfoz9HIUdNGhVgC/LaWhvrjtbM29 pVoxyL9E7Af9VBK5qAWVpJCRO9PC5A9BECn1OWhOwKcjNGFFAOwWs9LhIgUS/+CxwxoM 2PpqQadH+InHbaTgYHEnCxDOAOxnkCMdxgdrsKqfvw6TPX2bXtas1Ynexlz4XuX4UWBI YCDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759839643; x=1760444443; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=aTAgJkdvXfIYVJGWt9rTo9DrGAL0rL30tXGrZW/Q/UA=; b=Grae7P+llLI5tHAta7RVgWqZ5J+HhI+5ALWI3nJ+j1g2MeX1dsKwEDQxs2g2L7aTMm 8nnMqaLYsHjg/lM8p5WvzClgqAYpgR6MUbE2F/c7v4HyxD5EMNp1wPG//+zUEqo9UQ6x 25vg/jV/AO9dWfC9s4tRThoCSd9lLI6TLgB1vi3ucVJ1CAUouz3YFxfexcKsWoh8Q7ib fj6Us9RElJBYsg8CSQB0RkYy9qrIFnpcJQmF5dqWeEfBX/WToX0PqyD+JluH8apTgy3J s3UheE8CBFvxlfU+TVg+4PZEjKK9v01rNSkQAu3FFrDExuMDeHSAJsb5AjsL6U9+Wy39 sP0g== X-Forwarded-Encrypted: i=1; AJvYcCU7CIuPIFjLG30t7AyCGw8X3MTj8rnvKaPl9L3KdNvDlQPHcQPiqjUJAQuq3mmUU7JkftfASZqVNI8UW00=@vger.kernel.org X-Gm-Message-State: AOJu0YwkESCmhRqqSCXASMuoUiWbP0zEcEWXS0IG2EuSNpCogawPjOes EXcV7xXHd88x1rBFqfaHf/0iRNBaPk+/GLW3vNun+vl6V2y44KWBmhPpjFUsPMa7 X-Gm-Gg: ASbGncsnNPxwNbIbWel2JP6PTnwFZEKKeHKX1+1NVNUkz+G281hB2Xm3VTTxy0U4NxO J4Vh9CCfPgo9bMMbvPYWsX/iG6ixym8YyLSH5mMCitS8Xz/X6uc6zxZV6BBnOIcq07GzHZiMLq6 RdUuKlvtCQsACDbJl5FQPNpeDu28VZS+vmt47mFHv5ntfY6r0sGOb8EHLoMOz1yRl+97trRXWro sxBAD6zqDvCD4NB+dREvtCPc/13oGBXYlcbQ97j4P08RqfztTG/6ji7d5SBFaiNa7cchjWmbH5W Fn1Pgq7HI1COiXvCcZ1G3xroOShTEGlukKuTCIIu3ljGbN83MDeYSsCQyxuPQDd1jedQkObRFYx 1X+4qkGUARvQ6fGU8fjKTj13HAbZ44GwkZiEyB4IV X-Google-Smtp-Source: AGHT+IFVcM3R4gXRnpw+tlnoSIwV5PNPCQsvct6ThdG/Q39YghEZIMUDacX/nHdSOJk06aKFSGKo3Q== X-Received: by 2002:a05:6512:68c:b0:58b:2a2:2a01 with SMTP id 2adb3069b0e04-58cb984f07fmr5343552e87.5.1759839642331; Tue, 07 Oct 2025 05:20:42 -0700 (PDT) Received: from localhost.localdomain ([2001:9b1:d5a0:a500::24b]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-58b01141151sm6061947e87.59.2025.10.07.05.20.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 05:20:41 -0700 (PDT) From: "Uladzislau Rezki (Sony)" To: linux-mm@kvack.org, Andrew Morton Cc: Michal Hocko , Baoquan He , LKML , Uladzislau Rezki , Michal Hocko Subject: [PATCH v4 03/10] mm/vmalloc: Support non-blocking GFP flags in alloc_vmap_area() Date: Tue, 7 Oct 2025 14:20:28 +0200 Message-ID: <20251007122035.56347-4-urezki@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251007122035.56347-1-urezki@gmail.com> References: <20251007122035.56347-1-urezki@gmail.com> 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" alloc_vmap_area() currently assumes that sleeping is allowed during allocation. This is not true for callers which pass non-blocking GFP flags, such as GFP_ATOMIC or GFP_NOWAIT. This patch adds logic to detect whether the given gfp_mask permits blocking. It avoids invoking might_sleep() or falling back to reclaim path if blocking is not allowed. This makes alloc_vmap_area() safer for use in non-sleeping contexts, where previously it could hit unexpected sleeps, trigger warnings. It is a preparation and adjustment step to later allow both GFP_ATOMIC and GFP_NOWAIT allocations in this series. Acked-by: Michal Hocko Reviewed-by: Baoquan He Signed-off-by: Uladzislau Rezki (Sony) --- mm/vmalloc.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 798b2ed21e46..d83c01caaabe 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -2017,6 +2017,7 @@ static struct vmap_area *alloc_vmap_area(unsigned lon= g size, unsigned long freed; unsigned long addr; unsigned int vn_id; + bool allow_block; int purged =3D 0; int ret; =20 @@ -2028,7 +2029,8 @@ static struct vmap_area *alloc_vmap_area(unsigned lon= g size, =20 /* Only reclaim behaviour flags are relevant. */ gfp_mask =3D gfp_mask & GFP_RECLAIM_MASK; - might_sleep(); + allow_block =3D gfpflags_allow_blocking(gfp_mask); + might_sleep_if(allow_block); =20 /* * If a VA is obtained from a global heap(if it fails here) @@ -2062,7 +2064,8 @@ static struct vmap_area *alloc_vmap_area(unsigned lon= g size, * This is not a fast path. Check if yielding is needed. This * is the only reschedule point in the vmalloc() path. */ - cond_resched(); + if (allow_block) + cond_resched(); } =20 trace_alloc_vmap_area(addr, size, align, vstart, vend, IS_ERR_VALUE(addr)= ); @@ -2071,8 +2074,16 @@ static struct vmap_area *alloc_vmap_area(unsigned lo= ng size, * If an allocation fails, the error value is * returned. Therefore trigger the overflow path. */ - if (IS_ERR_VALUE(addr)) - goto overflow; + if (IS_ERR_VALUE(addr)) { + if (allow_block) + goto overflow; + + /* + * We can not trigger any reclaim logic because + * sleeping is not allowed, thus fail an allocation. + */ + goto out_free_va; + } =20 va->va_start =3D addr; va->va_end =3D addr + size; @@ -2122,6 +2133,7 @@ static struct vmap_area *alloc_vmap_area(unsigned lon= g size, pr_warn("vmalloc_node_range for size %lu failed: Address range restricte= d to %#lx - %#lx\n", size, vstart, vend); =20 +out_free_va: kmem_cache_free(vmap_area_cachep, va); return ERR_PTR(-EBUSY); } --=20 2.47.3 From nobody Sat Feb 7 19:08:23 2026 Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) (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 69CAF2DECB9 for ; Tue, 7 Oct 2025 12:20:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759839647; cv=none; b=XV+z72eqVwF+ZKBbQHGGdC+XSL+IlulmfbnBNLdrgtNumiJ3AMWjgUKw1Kk2EsmynhwZv+QcZKaQPodhciN9gt/aMw9HYQSA1BWwwnW+7SLlqkep4sh4n9pdm2KiVFOp6SvwAQkDDXMtP90mmxcwbFoz3yWxcctIAsJREDJAHbU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759839647; c=relaxed/simple; bh=5LOLgDuRoV2shXqOUtSYOTm+9rMW+12+m4ljmK1VYqI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=h/Fh9M0kONXONaWa/dvZJfhsv3qzGAQWJL+WKU9QRrHCZGhSDW/qK/QuxhP5VoLgLshDgHYLUwF4JU58Pqm/TW8QjfKMwZ2YD5ENIfeo181jRA/kjmMo2WunVsW6y4GCWfI/78RlIHrne2ykXZJquWIurKnE2OpATQmURqrQLBw= 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=cT8SX+4n; arc=none smtp.client-ip=209.85.167.52 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="cT8SX+4n" Received: by mail-lf1-f52.google.com with SMTP id 2adb3069b0e04-57b35e176dbso7996395e87.1 for ; Tue, 07 Oct 2025 05:20:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1759839643; x=1760444443; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=FuOmVyVQXsumRDN0WySluCU+eClCoeXEAXwSkpYGp4g=; b=cT8SX+4nUbI3lpOdc7fYDhNE/G2nS2u8hIGgnpgfdXqPMRdTit/deAl62fcsQ1ODdF BFQJICLfSsdUN9H6jCBCR0BxJZZUkn+7icRp130XT0/zsFIsThM86vEqSrQK+HqzJeoQ GjqEO4RrHv17zfRThW+ZdEcQ+l6vLc2umt2HvdTN/ROsqVv6b0/ndISVeMvgB/x+h8ly droVWO8SQsJwHT6rKG8tjvzRO8Q64jmXXFB3XZeUbsbdFY3q1/HrHGGzcMLtlhd5U0/k ng94pIDmrX8i6EZYm33tnvnuU4HrgifqQBQ3WiE3jw+OU9ufVQ2m/5xWUg7cPi98YD7t zoYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759839643; x=1760444443; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FuOmVyVQXsumRDN0WySluCU+eClCoeXEAXwSkpYGp4g=; b=k1j6cAFkU4VduzNJpEQbDiIx5Zs2IkaQF6VDtOT9btyFuFyktyKmTg0rw+h+V75kzA oJQlThsaJlQNO1MaQ82TJT3PfBNp4lfWp8a5DmwtW5nl7iwoKg0SOkJfvlvH0nWlHhy3 A21LPHG/k5MIlMmWQ7fksAzB38DS/8eHAnSdd1kQpSbWmYgP5el126uiZYZjZpeA1cZ+ cj28Sc4j5uOUSTVKKfufxvaNDCBGr/f+fZbROui5LnyVTMICmO1dm8NQmIjyABDCz9h5 ZkucF/FL2LoLqLe5dlRgp8tS8WMs87n9R8+fmnyVBaKPOaCqjMDVjDb2HWNPX2qkKBxY 5Xww== X-Forwarded-Encrypted: i=1; AJvYcCVcI762VAOhd4xgncfKqmYM31Vnf6DSEfcxVUVtKaq1UPjxNHMa34VLCo6VfkOfUN5DWD2i1nDvITu8D2U=@vger.kernel.org X-Gm-Message-State: AOJu0YxUKyByaPBGiCENlnJ061dzyVKsxhpMmHXxhTucns87IcInhcKS mI7i7WvTUx/PPtc5S8AwJWI0QB/0uuiYQYDMiTO7e8VpTXkVWXzp97My X-Gm-Gg: ASbGncv/AAGNszwlP3PF2Vv5PVQ2MmLVCVm5v7IMPyGkb9LGv+/dSpjeRqJkfwF9AEu PCUQ4iyNag5M/fsn3g3mYV7tc4a0REtLLEOgO26p+HosFB8YSfJgLJN9TMNgEbnMoCxv5Z4BBWe 3Lvm2KWYJp0vqqE/HoWzEsOAh5eXFN7/txnSg5jiqGjDYqvDg52i9EWmlBtumXXV2OjY9wLBwMh ltuoXD9jVmwI+s+y5Vh+gmdFCPKPYSqimf1QMIUE5Bp80yUuNK9koji/w6X/Yxd9WoFszpYB6ip 7XjJRPcNJH708y3sdOYKGR3k3uxsVUPyex3LMmSuRuyx6EY3JtYWMakMbnVbFu8dSgQaor98nJE RTCrntytiX5DN0Kh0b5YVKu6P00jXgKAH+WUo+60tfse7SV7UMYU= X-Google-Smtp-Source: AGHT+IEpTqLVUr842ienvFDBkvqxbi9T9sFNMNYe1H+RhBIvslkgbvZ0jDXtV54NnONs2RrzHQv/4A== X-Received: by 2002:ac2:4e16:0:b0:586:83e2:2295 with SMTP id 2adb3069b0e04-58cbb816b78mr4499915e87.45.1759839643348; Tue, 07 Oct 2025 05:20:43 -0700 (PDT) Received: from localhost.localdomain ([2001:9b1:d5a0:a500::24b]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-58b01141151sm6061947e87.59.2025.10.07.05.20.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 05:20:42 -0700 (PDT) From: "Uladzislau Rezki (Sony)" To: linux-mm@kvack.org, Andrew Morton Cc: Michal Hocko , Baoquan He , LKML , Uladzislau Rezki , Michal Hocko Subject: [PATCH v4 04/10] mm/vmalloc: Defer freeing partly initialized vm_struct Date: Tue, 7 Oct 2025 14:20:29 +0200 Message-ID: <20251007122035.56347-5-urezki@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251007122035.56347-1-urezki@gmail.com> References: <20251007122035.56347-1-urezki@gmail.com> 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" __vmalloc_area_node() may call free_vmap_area() or vfree() on error paths, both of which can sleep. This becomes problematic if the function is invoked from an atomic context, such as when GFP_ATOMIC or GFP_NOWAIT is passed via gfp_mask. To fix this, unify error paths and defer the cleanup of partly initialized vm_struct objects to a workqueue. This ensures that freeing happens in a process context and avoids invalid sleeps in atomic regions. Acked-by: Michal Hocko Reviewed-by: Baoquan He Signed-off-by: Uladzislau Rezki (Sony) --- include/linux/vmalloc.h | 6 +++++- mm/vmalloc.c | 34 +++++++++++++++++++++++++++++++--- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h index eb54b7b3202f..1e43181369f1 100644 --- a/include/linux/vmalloc.h +++ b/include/linux/vmalloc.h @@ -50,7 +50,11 @@ struct iov_iter; /* in uio.h */ #endif =20 struct vm_struct { - struct vm_struct *next; + union { + struct vm_struct *next; /* Early registration of vm_areas. */ + struct llist_node llnode; /* Asynchronous freeing on error paths. */ + }; + void *addr; unsigned long size; unsigned long flags; diff --git a/mm/vmalloc.c b/mm/vmalloc.c index d83c01caaabe..9e29dd767c41 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -3687,6 +3687,35 @@ vm_area_alloc_pages(gfp_t gfp, int nid, return nr_allocated; } =20 +static LLIST_HEAD(pending_vm_area_cleanup); +static void cleanup_vm_area_work(struct work_struct *work) +{ + struct vm_struct *area, *tmp; + struct llist_node *head; + + head =3D llist_del_all(&pending_vm_area_cleanup); + if (!head) + return; + + llist_for_each_entry_safe(area, tmp, head, llnode) { + if (!area->pages) + free_vm_area(area); + else + vfree(area->addr); + } +} + +/* + * Helper for __vmalloc_area_node() to defer cleanup + * of partially initialized vm_struct in error paths. + */ +static DECLARE_WORK(cleanup_vm_area, cleanup_vm_area_work); +static void defer_vm_area_cleanup(struct vm_struct *area) +{ + if (llist_add(&area->llnode, &pending_vm_area_cleanup)) + schedule_work(&cleanup_vm_area); +} + static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask, pgprot_t prot, unsigned int page_shift, int node) @@ -3718,8 +3747,7 @@ static void *__vmalloc_area_node(struct vm_struct *ar= ea, gfp_t gfp_mask, warn_alloc(gfp_mask, NULL, "vmalloc error: size %lu, failed to allocated page array size %lu", nr_small_pages * PAGE_SIZE, array_size); - free_vm_area(area); - return NULL; + goto fail; } =20 set_vm_area_page_order(area, page_shift - PAGE_SHIFT); @@ -3796,7 +3824,7 @@ static void *__vmalloc_area_node(struct vm_struct *ar= ea, gfp_t gfp_mask, return area->addr; =20 fail: - vfree(area->addr); + defer_vm_area_cleanup(area); return NULL; } =20 --=20 2.47.3 From nobody Sat Feb 7 19:08:23 2026 Received: from mail-lf1-f54.google.com (mail-lf1-f54.google.com [209.85.167.54]) (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 703C72DF3F9 for ; Tue, 7 Oct 2025 12:20:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759839649; cv=none; b=myIj2qyN0rEetzne1EXcr5cX0theQbWVTfx61hrD515u9/9RPPO5JeTbjWi/xc/fgqc5kGS7MMmBM0mk8GvzEL5cERpkNNDNDUzudMC+uIPphLeJ/Um5b14lWb3HM8GqKompirS0wOI/ZnHTg4OxWGw3uarVifBa9VF0vYFuBnY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759839649; c=relaxed/simple; bh=ZVp9FIATnWymDAEfVzq5zKbM1xcp8hPB8sUKQ+bCiCs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fRk07TXN4mDLHDCF7NOzTb0j0ugMeNpTnxirrCYArvx/omPKEDAC3wpS+dBsfLaOrh8G73o1zIlPwTykaK9sr2JH4/OoANBTucKomqnB+GygWp1ce/2Z+XMjTE3+D1SbweUeiCcFKxQJawR4mdyD3f4i8TM+BLvh0fk7J0I4f7g= 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=mn1LkJR6; arc=none smtp.client-ip=209.85.167.54 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="mn1LkJR6" Received: by mail-lf1-f54.google.com with SMTP id 2adb3069b0e04-57ea78e0618so7029910e87.0 for ; Tue, 07 Oct 2025 05:20:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1759839644; x=1760444444; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0yCAVXUd+Xggdo34An12Zy3AWPX111PHofILGlMoG8c=; b=mn1LkJR6sY3BipjTjaA5486qpOSWPy5SOjuLO4xTyMqYniDuFAfUdNDGd6ST3RMn5p 34mgkAv1QRVweggoxeJ+vfbdEdQYOa6oszNbVTJFUZGzAgza4THs7Vg0uy2gDdoihSIE vuLdWZ6YYxX7rN0WRm1P/AIz7gYd3FT1ioPVoWxziJHnez611JBKSuEl57Gp8qhP9H/z 0JdNlhzUNVANYbmGC30dLaKQZav38wQDW7/qd76aq8YELVx5ZBPd0fL3dNZRZfGPO9bl rTudJRcwVVGyaUuLEAsSrcVxx+WkHYMwD3RaLMBvIg4H15LJGCn7UL7+1kFMWy6WXe8k QsRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759839644; x=1760444444; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0yCAVXUd+Xggdo34An12Zy3AWPX111PHofILGlMoG8c=; b=t3QvvF+t2GYzPLuARjhf389Yj0zxgKdTCM+7Lec9/3++Jonzm9amqYCuZ0RQc4nsDJ FzFC+D92lIdUw1HxoFpm78E+eOkaO23i1OM7STJGk1kC035ozPulkfYf1pn6ZQlSFS92 75xoQQbSvyJEKAwpBLEiLK/tncxczmP0qj4kGqACJTnuKxbp3WH/ZqcKzmQgUaBWeqXj xCJnL2+//3XJcmOUf/zdPs9yerm3is8PFNlZnGqePJBQe5R114RCtNLw5lmSxf+w0nlR /KHMoOBMn+3F+9MDxHehEkdIQkVCHgtRZZ+PEM+ILGsW91VwiUO0yXS+J75m0T7fZ/Nb 6N6w== X-Forwarded-Encrypted: i=1; AJvYcCV9RjOgpXnZdtd4UaaZlhReWJEDHX7dErq2sEMtdk/JAQ++WQ6mANnI2ekETSGPug7OcVOzCZ7+igUpxTY=@vger.kernel.org X-Gm-Message-State: AOJu0Yx2BtbdNFA6TpvtIf/fn7+mHWq+bMhS1xznVO2OAeUnYSFbxbJt Ouu8tkJ7HB7U6zqmXIGceQQzqJxzsYnClGX+w69r6Db1IuyuOoZO3oi2 X-Gm-Gg: ASbGncsKWc8sVxQIRxRc7uzXzMsZ0hOTl8cciE5DXZzYYAmkisNBhYMhgHMZDfaxjTR zpcgCS0ZoBERyesVGt/tFOH6QaNX5luHToi8cJaebLmPuqyydHB+QAjIDZPUtW2ICEBLef+Bgat nRAX2WLJYFjxu4usRjcjLyUsm/sz3f1qCvyShhQ4GXHIw+RQsC92GuAldEFWyNwLcdChsBgh0P4 2oOkputDE2f3WzaEcJqtE5nQY0osEWXe3FtT+ufCAr6a84rabfMjQBJWJrfXQJtdSaOR3KFDU0G DDuQSk7Z/eZ+NiSUoI4SfkwHzVARpEnn7EnMqoHHHgSQ6wKdgviruUKuGCvg7Ycu4bimr5H6yLv jfy9TElE2H8HbktS1B2dCcwPL7ePjrRyDNYypi3Ce X-Google-Smtp-Source: AGHT+IHVrpI0gb3Ds4p1Dqen/CPZgYTHQ0n/2z/TsuCGFbcUs5DU+g0Ae0H7GTXue/O7cP3eNfdbhg== X-Received: by 2002:a05:6512:12c2:b0:57e:3217:61db with SMTP id 2adb3069b0e04-58cb96629e2mr4506999e87.1.1759839644325; Tue, 07 Oct 2025 05:20:44 -0700 (PDT) Received: from localhost.localdomain ([2001:9b1:d5a0:a500::24b]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-58b01141151sm6061947e87.59.2025.10.07.05.20.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 05:20:43 -0700 (PDT) From: "Uladzislau Rezki (Sony)" To: linux-mm@kvack.org, Andrew Morton Cc: Michal Hocko , Baoquan He , LKML , Uladzislau Rezki , Michal Hocko Subject: [PATCH v4 05/10] mm/vmalloc: Handle non-blocking GFP in __vmalloc_area_node() Date: Tue, 7 Oct 2025 14:20:30 +0200 Message-ID: <20251007122035.56347-6-urezki@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251007122035.56347-1-urezki@gmail.com> References: <20251007122035.56347-1-urezki@gmail.com> 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" Make __vmalloc_area_node() respect non-blocking GFP masks such as GFP_ATOMIC and GFP_NOWAIT. - Add memalloc_apply_gfp_scope()/memalloc_restore_scope() helpers to apply a proper scope. - Apply memalloc_apply_gfp_scope()/memalloc_restore_scope() around vmap_pages_range() for page table setup. - Set "nofail" to false if a non-blocking mask is used, as they are mutually exclusive. This is particularly important for page table allocations that internally use GFP_PGTABLE_KERNEL, which may sleep unless such scope restrictions are applied. For example: __pte_alloc_kernel() pte_alloc_one_kernel(&init_mm); pagetable_alloc_noprof(GFP_PGTABLE_KERNEL & ~__GFP_HIGHMEM, 0); Note: in most cases, PTE entries are established only up to the level required by current vmap space usage, meaning the page tables are typically fully populated during the mapping process. Acked-by: Michal Hocko Reviewed-by: Baoquan He Signed-off-by: Uladzislau Rezki (Sony) --- include/linux/vmalloc.h | 2 ++ mm/vmalloc.c | 52 +++++++++++++++++++++++++++++++++-------- 2 files changed, 44 insertions(+), 10 deletions(-) diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h index 1e43181369f1..e8e94f90d686 100644 --- a/include/linux/vmalloc.h +++ b/include/linux/vmalloc.h @@ -332,4 +332,6 @@ bool vmalloc_dump_obj(void *object); static inline bool vmalloc_dump_obj(void *object) { return false; } #endif =20 +unsigned int memalloc_apply_gfp_scope(gfp_t gfp_mask); +void memalloc_restore_scope(unsigned int flags); #endif /* _LINUX_VMALLOC_H */ diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 9e29dd767c41..d8bcd87239b5 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -3716,6 +3716,42 @@ static void defer_vm_area_cleanup(struct vm_struct *= area) schedule_work(&cleanup_vm_area); } =20 +/* + * Page tables allocations ignore external GFP. Enforces it by + * the memalloc scope API. It is used by vmalloc internals and + * KASAN shadow population only. + * + * GFP to scope mapping: + * + * non-blocking (no __GFP_DIRECT_RECLAIM) - memalloc_noreclaim_save() + * GFP_NOFS - memalloc_nofs_save() + * GFP_NOIO - memalloc_noio_save() + * + * Returns a flag cookie to pair with restore. + */ +unsigned int +memalloc_apply_gfp_scope(gfp_t gfp_mask) +{ + unsigned int flags =3D 0; + + if (!gfpflags_allow_blocking(gfp_mask)) + flags =3D memalloc_noreclaim_save(); + else if ((gfp_mask & (__GFP_FS | __GFP_IO)) =3D=3D __GFP_IO) + flags =3D memalloc_nofs_save(); + else if ((gfp_mask & (__GFP_FS | __GFP_IO)) =3D=3D 0) + flags =3D memalloc_noio_save(); + + /* 0 - no scope applied. */ + return flags; +} + +void +memalloc_restore_scope(unsigned int flags) +{ + if (flags) + memalloc_flags_restore(flags); +} + static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask, pgprot_t prot, unsigned int page_shift, int node) @@ -3732,6 +3768,10 @@ static void *__vmalloc_area_node(struct vm_struct *a= rea, gfp_t gfp_mask, =20 array_size =3D (unsigned long)nr_small_pages * sizeof(struct page *); =20 + /* __GFP_NOFAIL and "noblock" flags are mutually exclusive. */ + if (!gfpflags_allow_blocking(gfp_mask)) + nofail =3D false; + if (!(gfp_mask & (GFP_DMA | GFP_DMA32))) gfp_mask |=3D __GFP_HIGHMEM; =20 @@ -3797,22 +3837,14 @@ static void *__vmalloc_area_node(struct vm_struct *= area, gfp_t gfp_mask, * page tables allocations ignore external gfp mask, enforce it * by the scope API */ - if ((gfp_mask & (__GFP_FS | __GFP_IO)) =3D=3D __GFP_IO) - flags =3D memalloc_nofs_save(); - else if ((gfp_mask & (__GFP_FS | __GFP_IO)) =3D=3D 0) - flags =3D memalloc_noio_save(); - + flags =3D memalloc_apply_gfp_scope(gfp_mask); do { ret =3D vmap_pages_range(addr, addr + size, prot, area->pages, page_shift); if (nofail && (ret < 0)) schedule_timeout_uninterruptible(1); } while (nofail && (ret < 0)); - - if ((gfp_mask & (__GFP_FS | __GFP_IO)) =3D=3D __GFP_IO) - memalloc_nofs_restore(flags); - else if ((gfp_mask & (__GFP_FS | __GFP_IO)) =3D=3D 0) - memalloc_noio_restore(flags); + memalloc_restore_scope(flags); =20 if (ret < 0) { warn_alloc(gfp_mask, NULL, --=20 2.47.3 From nobody Sat Feb 7 19:08:23 2026 Received: from mail-lf1-f51.google.com (mail-lf1-f51.google.com [209.85.167.51]) (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 DE4BF2E03EF for ; Tue, 7 Oct 2025 12:20:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759839651; cv=none; b=cxNWsrn7Gq9/79hM1qvY2KVcqzXOpE0XytcVGTuLvXCvRK56KGMReIGT6j8wlDDkXMwDlgfi9AfkDGgbmLpwTzCrOz+QvqDpDGGDPrpsvE+mCH19MaKfudXhVSt2RuSYx4MAc5/93lKZr6z7ChZ88fCjUfQpoxvegfdiFtXb29k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759839651; c=relaxed/simple; bh=xgrKQtQTGQJxm4PXSr9W8MvsYHHNgtLsWXzVqBHDSr4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rVlDczn8iX+VL20SUxLHNXEzne0zU6/Lf5Sss2HjEvGchmYImLJcj8i04TK5mnVFtg9RaunlG2awDq6nZKsDi7JAhRfHADp1qNa1mb1Fg7X+zOkEg1L3dZc3EKeOYz3JYitmEYzKMl0aT4a/ErbzXbM9d+GmzJU+p9wPe6UDOrw= 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=jzTqmfDP; arc=none smtp.client-ip=209.85.167.51 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="jzTqmfDP" Received: by mail-lf1-f51.google.com with SMTP id 2adb3069b0e04-5797c8612b4so8179855e87.2 for ; Tue, 07 Oct 2025 05:20:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1759839646; x=1760444446; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CTx3t8206FADCajKY+kyp/2YAJmhuLjY8XEm0uYYaD4=; b=jzTqmfDP/kcGgwCPSs//amFyOklyF7/Q/pwefFrvi3hLIlopzz+R4h0wQ8QaaojQFL 9or6zkLJUMgybNMTs+rFky2uvddjwKZ20EsCOEOQEB0sDZDNciwS4oNdwYCKoS6GurA3 1a3appUMY7j3yYYLo57cJCxSCe/UNeE1VQmD2hDG6GmKHApza6Fgx5eaAIoa8neo2/fz K+dluXsdf/e7lzZODu+4/dc7zr0lkW/FIG8YEKHcuTfeF+NV1xX1CgskFJNqrfk0pqbi CqD6uRtTtVxOR+Nkun6xHYH7qMRmDlzexXCRKie41CjJXSa+CJHQJdmo55HckFJ/m1Ye g+zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759839646; x=1760444446; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CTx3t8206FADCajKY+kyp/2YAJmhuLjY8XEm0uYYaD4=; b=IvuRw9DooT5hkGscOah3gFXYl3ytwEHaUPVS+Ct3P8zoh4gusIkGr0qr9Da5foMgMM Ys8APnLO8pSrn/WuiqHUoVgQrQoNXE2oMs/J/TBrvVItJUSLkQYEPfpL3IWN25k4jTCJ LreggU0pVCxnff+Y5bltbmv9uMaQPVdQob5ErFvM+XAV2ZqAIvTK8U57Pqd4KHaWqhsz b67f4kiDQdrkAxpavH72GNwqOJLwrqEtcq5ok/LMsPQ2P49YTfJ1cljpvbUT4VoabAAU R4YUnfr/Md6VXviYdwzZGphSb5T2qQCU8h0Yv7ka6o8igq3kBdimIJgwxKZAcbdPLIC5 x5fw== X-Forwarded-Encrypted: i=1; AJvYcCUgndxgQcKRrTnar81m+KMkA1h12p694CvGmYcmExHjiKAn+1meUZIwLMPTzNQM6dp7AMZlkrdf3vNZnd8=@vger.kernel.org X-Gm-Message-State: AOJu0YxFZCLGALuknh0HMbc2IF4nlLRWTgHY27nSodeVtBZn77lX5HVl CDzwu6640mr/QujxWceh+3SGY10tBj1J+3V51OeQLVmZFZeKnYmyBFuP X-Gm-Gg: ASbGncuE4FvoEWPVAeJ4AoP+3sebZiPCTAoxBweKhFBFT6nhDqfTZmT+j+Dv27yoUZg F+YWSxHW1XKIDQwM01n2GXvglFPmUo8OPlc/i2RlrXm/+IJDzTj/wvFxE43rMVXgqaeJIwPP3nH 8ptjd1khtvekbdNufbdFdrJMaDwBP2hKc5r7zrxlISneWjrerHcAojsty1Cgle2TNZJ6lkhri8R +SXSs6p357brXokkOXtbpkIMi299CLwDIEKaY5ii75L8Pab81OslVdk6/UWhKT66iqE+GMWy0hY Q39wrffGS9tsXtRwJ63r5V8pE7DVw03S2PWsYAXTMBIgGxGD21FvSqKg4xkLh2f728uQyYPte9d On69dumCMzD6g49rhiW+jVPyKWK/qXaHI8b5apePy X-Google-Smtp-Source: AGHT+IFBISJsnLRLg6R99DyCufi90oiGK10CgIZ6THuFjlwNfx/elYDiBcir+/FIn6ZcCpkoSUOyAQ== X-Received: by 2002:a05:6512:23a9:b0:58b:6f:719e with SMTP id 2adb3069b0e04-58cba6c1968mr5532094e87.17.1759839645937; Tue, 07 Oct 2025 05:20:45 -0700 (PDT) Received: from localhost.localdomain ([2001:9b1:d5a0:a500::24b]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-58b01141151sm6061947e87.59.2025.10.07.05.20.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 05:20:44 -0700 (PDT) From: "Uladzislau Rezki (Sony)" To: linux-mm@kvack.org, Andrew Morton Cc: Michal Hocko , Baoquan He , LKML , Uladzislau Rezki , Andrey Ryabinin , Alexander Potapenko Subject: [PATCH v4 06/10] mm/kasan: Support non-blocking GFP in kasan_populate_vmalloc() Date: Tue, 7 Oct 2025 14:20:31 +0200 Message-ID: <20251007122035.56347-7-urezki@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251007122035.56347-1-urezki@gmail.com> References: <20251007122035.56347-1-urezki@gmail.com> 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" A "gfp_mask" is already passed to kasan_populate_vmalloc() as an argument to respect GFPs from callers and KASAN uses it for its internal allocations. But apply_to_page_range() function ignores GFP flags due to a hard-coded mask. Wrap the call with memalloc_apply_gfp_scope()/memalloc_restore_scope() so that non-blocking GFP flags(GFP_ATOMIC, GFP_NOWAIT) are respected. Cc: Andrey Ryabinin Cc: Alexander Potapenko Reviewed-by: Baoquan He Reviewed-by: Andrey Ryabinin Signed-off-by: Uladzislau Rezki (Sony) --- mm/kasan/shadow.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/mm/kasan/shadow.c b/mm/kasan/shadow.c index 5d2a876035d6..a30d84bfdd52 100644 --- a/mm/kasan/shadow.c +++ b/mm/kasan/shadow.c @@ -377,18 +377,10 @@ static int __kasan_populate_vmalloc(unsigned long sta= rt, unsigned long end, gfp_ * page tables allocations ignore external gfp mask, enforce it * by the scope API */ - if ((gfp_mask & (__GFP_FS | __GFP_IO)) =3D=3D __GFP_IO) - flags =3D memalloc_nofs_save(); - else if ((gfp_mask & (__GFP_FS | __GFP_IO)) =3D=3D 0) - flags =3D memalloc_noio_save(); - + flags =3D memalloc_apply_gfp_scope(gfp_mask); ret =3D apply_to_page_range(&init_mm, start, nr_pages * PAGE_SIZE, kasan_populate_vmalloc_pte, &data); - - if ((gfp_mask & (__GFP_FS | __GFP_IO)) =3D=3D __GFP_IO) - memalloc_nofs_restore(flags); - else if ((gfp_mask & (__GFP_FS | __GFP_IO)) =3D=3D 0) - memalloc_noio_restore(flags); + memalloc_restore_scope(flags); =20 ___free_pages_bulk(data.pages, nr_pages); if (ret) --=20 2.47.3 From nobody Sat Feb 7 19:08:23 2026 Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) (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 F29772E03F2 for ; Tue, 7 Oct 2025 12:20:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759839652; cv=none; b=rueV2KD4IuTrKFurUwu1pGn+xWSJzbG521E8KgrCdpeaXWIAFkks5owjWSyyenEFsEUj5RzvKlEDZweT7Hv/Z0x69wuRtUxaxYogXBClyeg+hcwYg/Jl+Wd3hxHMHnmqfyZMjiQOIemw1zhK57EHPLdOkE4rDjJos0cOTMCLafQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759839652; c=relaxed/simple; bh=6c2qdsekt/lCMkeMk65Hu+cWiGI0mmLXJB3D5AbXCc4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rsvyj/d01AWBnQLGIFlds8p2TJr31PM8IDPS5JG6OU+Y4Z3Pb1xvYMWP9aW70IUvD+WA3KK0BZXub8tW+sGh4Zo/+XtLAW4LkB61l9oddrBLhedSSPzZ0yaxGjXoRxZfHye/L/YSRipr0kq5QVVrNKfiVfGtx7u6WP1vFy3Xye8= 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=ewOucYd8; arc=none smtp.client-ip=209.85.167.53 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="ewOucYd8" Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-5818de29d15so7671561e87.2 for ; Tue, 07 Oct 2025 05:20:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1759839647; x=1760444447; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ynvmccn9zBZNQHviUDaoxb4f3kqsprve2CRTYJdnjMs=; b=ewOucYd8pLVdl7LNXWmufZOi0Z/1fWRhsZ9s5c6cXNZtj4UkDusccITiASWZ8Hn/T0 nQ2tzOYvsquGQqQ4LcAsgAMg0OWpwL2FSKiQzxOaf2MNKQLtSoH4tuBpDpe5WpYS/Gi/ yRcg7g18CrNAQ5XE5udgi3W5eeo86Ekz4JDBD+ciSasJtr3M1VSOfpYX6ZmdOJEHr5My bD2+yzKTJ/iGW+sFtTiG6lJcOslS64HA3ixrTKP5zUvn07IS5XgSaeI6NGzvVB4oFM3B VQoQcY8pbN23hKYTbsBg2Li6zRLOoMHOn1ef6j2nOAaqawQJsgt95+MU8lSTrFtr8zK8 Czcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759839647; x=1760444447; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ynvmccn9zBZNQHviUDaoxb4f3kqsprve2CRTYJdnjMs=; b=UXJwHe9LjwKgjXj0Wr0TMNbvXiCs1WY7zGj8oJZCEo8PA+usYHe5FoOIjxWdUJXMN3 rxSTftvz3CEAMHdXGXCs5spesfXmGqYe5s04Ioys3iakPHtzbjs/DneLv5DbfnNSNRhu hSJrycsazHfvu5Gv5q037RCDVUBZV8W4fJGRfq5EAPPyiaFaxG3NK5+RZ8PBn55muSG1 4Vyn9yusl/Xas4ocjhVv3x9co9F40GW9/mPrS0kYHGtpEkhEJOYqCI6TxTKnLm4XvACM 2RMrtJcATa9/T69FzabUCw08TPcZRrAsBZSfZaTA461gLMRnhcDuFrLePiz16w9WXxx2 SI/A== X-Forwarded-Encrypted: i=1; AJvYcCUG2e4etT3jj4nH8V7RYCiJvEn7gQOjI5GkzZ8VYJBi35yl0oYS7hzwk1xCJkUcK0j5lmU3yK+SVsbCMeQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxJFRZcTPoLPktedf0caU7+oYsO3P3jmGONudHOddvt9czkwcfw i9o/LEXzYyIJFOeJDJO1lnOqowLD1WLnw6RZONEffqwmGG1srZo88duY X-Gm-Gg: ASbGncvuOMRyc4DiCFUdL/l+0TrtKtZu449aZ1zNQxgX1TBEZdzp6ycGLUVhaLEzx1w jdlmbP6n8LS2fwL8IHaCHiQaOz1FGntO9xgsVDZdq8FS8flHjwtppv+hq4quS0QSrTJfv4Vvz+M 2wfVHuKGOjOM/yK0GhFJlPLKRe6yhaFuSEDbEVwKF+Jhas4IjH3EaRRfTGERgmawubRZ7/CiC2m vzCB3vKRKihuPZuZ15ez/eJ9IPsttmwNyVOI7yjP3/DYSLOrwk0+0UpQU7BIbyKW0m4RXc2myfI 9qcyRnEfL4u/XU//CicAcn3YkTBrW7UkVLA89M7dwziLUSjl1v5T7yzfVsw4ELUJfQngO9HUzDT zYpJhsIJrTNo/QxBjoWaUiLWTD0V4WAd56J5suzR7rK1gMoa/SIY= X-Google-Smtp-Source: AGHT+IH105Fru7ZMF2Ka/VGHrM+Or9jg6datvNtRkYwVYlEhOQfeSumqPhNLqAFC6JxvJR07P3hoyQ== X-Received: by 2002:a05:6512:3d10:b0:57b:234f:52ba with SMTP id 2adb3069b0e04-58cbbbee6d7mr4848584e87.39.1759839646916; Tue, 07 Oct 2025 05:20:46 -0700 (PDT) Received: from localhost.localdomain ([2001:9b1:d5a0:a500::24b]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-58b01141151sm6061947e87.59.2025.10.07.05.20.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 05:20:46 -0700 (PDT) From: "Uladzislau Rezki (Sony)" To: linux-mm@kvack.org, Andrew Morton Cc: Michal Hocko , Baoquan He , LKML , Uladzislau Rezki , Alexander Potapenko , Marco Elver Subject: [PATCH v4 07/10] kmsan: Remove hard-coded GFP_KERNEL flags Date: Tue, 7 Oct 2025 14:20:32 +0200 Message-ID: <20251007122035.56347-8-urezki@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251007122035.56347-1-urezki@gmail.com> References: <20251007122035.56347-1-urezki@gmail.com> 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" kmsan_vmap_pages_range_noflush() allocates its temp s_pages/o_pages arrays with GFP_KERNEL, which may sleep. This is inconsistent with vmalloc() as it will support non-blocking requests later. Plumb gfp_mask through the kmsan_vmap_pages_range_noflush(), so it can use it internally for its demand. Please note, the subsequent __vmap_pages_range_noflush() still uses GFP_KERNEL and can sleep. If a caller runs under reclaim constraints, sleeping is forbidden, it must establish the appropriate memalloc scope API. Cc: Alexander Potapenko Cc: Marco Elver Signed-off-by: Uladzislau Rezki (Sony) --- include/linux/kmsan.h | 6 ++++-- mm/internal.h | 4 ++-- mm/kmsan/shadow.c | 6 +++--- mm/percpu-vm.c | 2 +- mm/vmalloc.c | 26 +++++++++++++++++--------- 5 files changed, 27 insertions(+), 17 deletions(-) diff --git a/include/linux/kmsan.h b/include/linux/kmsan.h index f2fd221107bb..7da9fd506b39 100644 --- a/include/linux/kmsan.h +++ b/include/linux/kmsan.h @@ -133,6 +133,7 @@ void kmsan_kfree_large(const void *ptr); * @prot: page protection flags used for vmap. * @pages: array of pages. * @page_shift: page_shift passed to vmap_range_noflush(). + * @gfp_mask: gfp_mask to use internally. * * KMSAN maps shadow and origin pages of @pages into contiguous ranges in * vmalloc metadata address range. Returns 0 on success, callers must check @@ -142,7 +143,8 @@ int __must_check kmsan_vmap_pages_range_noflush(unsigne= d long start, unsigned long end, pgprot_t prot, struct page **pages, - unsigned int page_shift); + unsigned int page_shift, + gfp_t gfp_mask); =20 /** * kmsan_vunmap_kernel_range_noflush() - Notify KMSAN about a vunmap. @@ -347,7 +349,7 @@ static inline void kmsan_kfree_large(const void *ptr) =20 static inline int __must_check kmsan_vmap_pages_range_noflush( unsigned long start, unsigned long end, pgprot_t prot, - struct page **pages, unsigned int page_shift) + struct page **pages, unsigned int page_shift, gfp_t gfp_mask) { return 0; } diff --git a/mm/internal.h b/mm/internal.h index 1561fc2ff5b8..e623c8103358 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -1355,7 +1355,7 @@ size_t splice_folio_into_pipe(struct pipe_inode_info = *pipe, #ifdef CONFIG_MMU void __init vmalloc_init(void); int __must_check vmap_pages_range_noflush(unsigned long addr, unsigned lon= g end, - pgprot_t prot, struct page **pages, unsigned int page_shif= t); + pgprot_t prot, struct page **pages, unsigned int page_shift, gfp_t gfp_ma= sk); unsigned int get_vm_area_page_order(struct vm_struct *vm); #else static inline void vmalloc_init(void) @@ -1364,7 +1364,7 @@ static inline void vmalloc_init(void) =20 static inline int __must_check vmap_pages_range_noflush(unsigned long addr, unsigned lon= g end, - pgprot_t prot, struct page **pages, unsigned int page_shif= t) + pgprot_t prot, struct page **pages, unsigned int page_shift, gfp_t gfp_ma= sk) { return -EINVAL; } diff --git a/mm/kmsan/shadow.c b/mm/kmsan/shadow.c index 54f3c3c962f0..3cd733663100 100644 --- a/mm/kmsan/shadow.c +++ b/mm/kmsan/shadow.c @@ -215,7 +215,7 @@ void kmsan_free_page(struct page *page, unsigned int or= der) =20 int kmsan_vmap_pages_range_noflush(unsigned long start, unsigned long end, pgprot_t prot, struct page **pages, - unsigned int page_shift) + unsigned int page_shift, gfp_t gfp_mask) { unsigned long shadow_start, origin_start, shadow_end, origin_end; struct page **s_pages, **o_pages; @@ -230,8 +230,8 @@ int kmsan_vmap_pages_range_noflush(unsigned long start,= unsigned long end, return 0; =20 nr =3D (end - start) / PAGE_SIZE; - s_pages =3D kcalloc(nr, sizeof(*s_pages), GFP_KERNEL); - o_pages =3D kcalloc(nr, sizeof(*o_pages), GFP_KERNEL); + s_pages =3D kcalloc(nr, sizeof(*s_pages), gfp_mask); + o_pages =3D kcalloc(nr, sizeof(*o_pages), gfp_mask); if (!s_pages || !o_pages) { err =3D -ENOMEM; goto ret; diff --git a/mm/percpu-vm.c b/mm/percpu-vm.c index cd69caf6aa8d..4f5937090590 100644 --- a/mm/percpu-vm.c +++ b/mm/percpu-vm.c @@ -194,7 +194,7 @@ static int __pcpu_map_pages(unsigned long addr, struct = page **pages, int nr_pages) { return vmap_pages_range_noflush(addr, addr + (nr_pages << PAGE_SHIFT), - PAGE_KERNEL, pages, PAGE_SHIFT); + PAGE_KERNEL, pages, PAGE_SHIFT, GFP_KERNEL); } =20 /** diff --git a/mm/vmalloc.c b/mm/vmalloc.c index d8bcd87239b5..d7e7049e01f8 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -671,16 +671,28 @@ int __vmap_pages_range_noflush(unsigned long addr, un= signed long end, } =20 int vmap_pages_range_noflush(unsigned long addr, unsigned long end, - pgprot_t prot, struct page **pages, unsigned int page_shift) + pgprot_t prot, struct page **pages, unsigned int page_shift, + gfp_t gfp_mask) { int ret =3D kmsan_vmap_pages_range_noflush(addr, end, prot, pages, - page_shift); + page_shift, gfp_mask); =20 if (ret) return ret; return __vmap_pages_range_noflush(addr, end, prot, pages, page_shift); } =20 +static int __vmap_pages_range(unsigned long addr, unsigned long end, + pgprot_t prot, struct page **pages, unsigned int page_shift, + gfp_t gfp_mask) +{ + int err; + + err =3D vmap_pages_range_noflush(addr, end, prot, pages, page_shift, gfp_= mask); + flush_cache_vmap(addr, end); + return err; +} + /** * vmap_pages_range - map pages to a kernel virtual address * @addr: start of the VM area to map @@ -696,11 +708,7 @@ int vmap_pages_range_noflush(unsigned long addr, unsig= ned long end, int vmap_pages_range(unsigned long addr, unsigned long end, pgprot_t prot, struct page **pages, unsigned int page_shift) { - int err; - - err =3D vmap_pages_range_noflush(addr, end, prot, pages, page_shift); - flush_cache_vmap(addr, end); - return err; + return __vmap_pages_range(addr, end, prot, pages, page_shift, GFP_KERNEL); } =20 static int check_sparse_vm_area(struct vm_struct *area, unsigned long star= t, @@ -3839,8 +3847,8 @@ static void *__vmalloc_area_node(struct vm_struct *ar= ea, gfp_t gfp_mask, */ flags =3D memalloc_apply_gfp_scope(gfp_mask); do { - ret =3D vmap_pages_range(addr, addr + size, prot, area->pages, - page_shift); + ret =3D __vmap_pages_range(addr, addr + size, prot, area->pages, + page_shift, nested_gfp); if (nofail && (ret < 0)) schedule_timeout_uninterruptible(1); } while (nofail && (ret < 0)); --=20 2.47.3 From nobody Sat Feb 7 19:08:23 2026 Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) (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 DF2C52E03F1 for ; Tue, 7 Oct 2025 12:20:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759839651; cv=none; b=reSN6/XIEOg4cm61hR9+psVGHUH60fJTV1iHvb6/XKlzJCWXdy8HGpm66kQFJEXxod1tYLdlXDOlCZVBYQicLa8XWjSnvzq8nitU4syZSJ/cb22NZDpU10eCmFv//j4hqB4L9MNpzmTPtVN6S7MKEaqIgXo7uNI6trja1JjQJiI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759839651; c=relaxed/simple; bh=IoJEBGvjCVG71xgP3yeHFGDfoqh2ea/SvWbww9siMuc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FJS7g/LabbLcEpoecJkd+8dO2xMDr3v0fXeva2LI7r+IMGt6HinyisnO68UgYtyq72qTDIShRNUuOuuq8HMQJ3bgHkVSIWLvVU1RNjvEPPkTqBGsO0TGGqn8M7cw3AYyRAMXc+RPb2mLYRGssdJrRmavwnC77vYouVx6GPAQmNE= 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=ZeNjEbLI; arc=none smtp.client-ip=209.85.167.46 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="ZeNjEbLI" Received: by mail-lf1-f46.google.com with SMTP id 2adb3069b0e04-586883eb9fbso1322869e87.1 for ; Tue, 07 Oct 2025 05:20:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1759839648; x=1760444448; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=R30emTvkjGHkQwmiRSKLnz0Kds8va1dPsb/YBIausdc=; b=ZeNjEbLIBJWuXeqBW1pfC962eUOxUtPLFvZ8+TOlhnx5oEEY3ECgdKBH2mCpeGXAwK GgDrkgJo4VsUWs7831sVigea45M/bSfK2kTUAy+wUxpA9OFyDau3yKwZ+3UJrj0qKixS qYaFxtXJ7p+XIZBFchQe5tKaV8Gy5IM0RP5MgdjQSFHjiG1F7YuVSYSdvESdT77V6Ayz 2V9L39+yEocb9JJpsuBy1p8+rjzk4LQuNsOkRrSv88gbDDbSQ/3PyW7ekQqVamZ9enZi FNtrN4DvhkDaUwerBK4C2Gnd8J+LWU6X9V/EkgBv4tlnMBvXPeqfO7UMR/+ifLS7KYgU O0jA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759839648; x=1760444448; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=R30emTvkjGHkQwmiRSKLnz0Kds8va1dPsb/YBIausdc=; b=ge2rrVtfo0yLnAEjNHDjK2I3e/nxboKCD6Hor+v7W9pXf1aD6/RqUDTBnOy1nfXVx+ 0AqrLjUmTodgXn/OGD/GbYjyHrxuOcLLrDuR9/Gy+bcUr37yHUvuD3di565gQHUFgtu/ xI+bsUMu7xHx+sztFBF3B3o/S/kaLOUtSKnEncGwSqA9COc7qcHnnswetDFGrpiiTvKN vC9u0p7RzCnaQi4w+HPSNzPccWwBEZJU/M962SP9QoVqUaBu5/H5NnrQR7miCvz1F9tl f096+1YAjS3AvVXmJlasHyG22Gpax55Rm8LTQwka2BDZEyy5fbV5wVJ/SehK5XrINwDy khwA== X-Forwarded-Encrypted: i=1; AJvYcCXSxS0Z9WKNIIbmt8aK36Rg/gLA6q9Oa+wcnhdm9XXRkDyfJsRi0bz2tdBtgoC3kbrESuXt0PplO4Zla8w=@vger.kernel.org X-Gm-Message-State: AOJu0YwNrzdz34GQa8GVvbV6Oa7Ht0Nt+sniJ21q+QfKbeiwPI8c7Fk8 QZRJvjbTqnuAj0tz/qd1cw4IBaihaFgEsgBLValaRlr704Ic4xG3uMpy X-Gm-Gg: ASbGncvIz0ROmBobjZ+BEzCnVEHczXjJVxEApqVKmv6y3nsB2Y6zzIUXrsVNTwUQqgX 3j4RwS7CcZW+jcygDXg+b6CJx7RJi4PNLH/+1Y8lLrEInLKi6/92FFOqSzqFX833wTDBWwknkl6 2geVJ30fj/MorqS76Zza5WVw9X3hTj5Ge9B2pPMgkbAtGffqBDQ4mC61E1JA8nPezZ+5hggbvZq LE6z4b9cjbnHNd4BJMbpKfreZsrxsgQCpoGXMdf+aci6uiRhY4u2Xh+haOxdSC9qdPB7kbKMQDd Hgsy6q3VbZ5p/setV3TilXmZDivK6WRYBJwZ0Jj0hfSSet/+t3ZrfvBtgKnuJRnZQNWfNG69JGf C8j1YbRN6XaNiMrFJ+FiHCJ4zEYDxQtvrk2u79KbV X-Google-Smtp-Source: AGHT+IHNWqIDadjqab9EoR4kVdLbVq3cRBaYZCy5fG559MhSdkjgavwhNixv0glhEVeYH7Z8s5RdVw== X-Received: by 2002:a05:6512:1089:b0:578:f613:ed9c with SMTP id 2adb3069b0e04-58cbb62b98amr5731937e87.43.1759839647876; Tue, 07 Oct 2025 05:20:47 -0700 (PDT) Received: from localhost.localdomain ([2001:9b1:d5a0:a500::24b]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-58b01141151sm6061947e87.59.2025.10.07.05.20.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 05:20:47 -0700 (PDT) From: "Uladzislau Rezki (Sony)" To: linux-mm@kvack.org, Andrew Morton Cc: Michal Hocko , Baoquan He , LKML , Uladzislau Rezki , Michal Hocko Subject: [PATCH v4 08/10] mm: Skip might_alloc() warnings when PF_MEMALLOC is set Date: Tue, 7 Oct 2025 14:20:33 +0200 Message-ID: <20251007122035.56347-9-urezki@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251007122035.56347-1-urezki@gmail.com> References: <20251007122035.56347-1-urezki@gmail.com> 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" might_alloc() catches invalid blocking allocations in contexts where sleeping is not allowed. However when PF_MEMALLOC is set, the page allocator already skips reclaim and other blocking paths. In such cases, a blocking gfp_mask does not actually lead to blocking, so triggering might_alloc() splats is misleading. Adjust might_alloc() to skip warnings when the current task has PF_MEMALLOC set, matching the allocator's actual blocking behaviour. Reviewed-by: Baoquan He Acked-by: Michal Hocko Signed-off-by: Uladzislau Rezki (Sony) --- include/linux/sched/mm.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/linux/sched/mm.h b/include/linux/sched/mm.h index 0232d983b715..a74582aed747 100644 --- a/include/linux/sched/mm.h +++ b/include/linux/sched/mm.h @@ -318,6 +318,9 @@ static inline void might_alloc(gfp_t gfp_mask) fs_reclaim_acquire(gfp_mask); fs_reclaim_release(gfp_mask); =20 + if (current->flags & PF_MEMALLOC) + return; + might_sleep_if(gfpflags_allow_blocking(gfp_mask)); } =20 --=20 2.47.3 From nobody Sat Feb 7 19:08:23 2026 Received: from mail-lf1-f41.google.com (mail-lf1-f41.google.com [209.85.167.41]) (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 D6D252E0419 for ; Tue, 7 Oct 2025 12:20:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759839653; cv=none; b=arkgvO0WORBcnKEgV3uulG2vc4gVagkzkaDVvdNFJEAo50Id6iA8FTNe2UaBWeSesyE8RSGkPq2o3eQH2qKChZLRy81Nzt9j3T6udUCuz99AEegI/5chPa712zJd+5HJl7FkBVIjrGgJQ0gJP11XrYAnJnDdjDFqdC+++e1YSFk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759839653; c=relaxed/simple; bh=9old03yzUQ3erpbW11QQhj3dq0A53A24gdFeeqB4raA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OYsEtyorWQ1XrEUp7MZY0Tp/UdpE92NZ71hamMoJdTeSKyffRDppR/2GF+eJ+abCDt2ia86z5IEgTa9MU3QEg5MLIBZWkxHKAD/NPJsQqRjevdGuEUpX7CjVvwAccy2u9N2bMg6QARI3WMNNM52mgVuKiKUSWSDSs3lK7Avr4MQ= 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=NoTF9xBz; arc=none smtp.client-ip=209.85.167.41 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="NoTF9xBz" Received: by mail-lf1-f41.google.com with SMTP id 2adb3069b0e04-57b8fc6097fso8183484e87.1 for ; Tue, 07 Oct 2025 05:20:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1759839650; x=1760444450; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=oLik2R41JKKg66R9u/7D437C5tFPGxIDYan0Bcp5bSc=; b=NoTF9xBzfOd7ou9w3OcTCuJVYNRHQMEvgRLmtalS5JSmOFRpDdoHibMm2ukQQ6BH1f QQFq5nrtLJCosNPhftMOjQ00CbPaILi+nLDVGBv9/R0Ki+Oy0ivTk1jhwBN8mLz8l5hZ hHpjBUrs2vJtokvQ03V7Q+/KINLyOt30N/9dnG3WXkKPsXl3D/SnB/0WoctZJuHJ5h+X qtS+sVW5oyBpCK8ZY/bCTwD6cja0yyYx4T55vuCZBKZIRKjHFVo3x3qu2/od7SnpxZhH m1T9cyZTSahn4hDqxQ3tpL5edgK3Z+iaVUs48I3QFGL57IFoQcCRYw1MGng6BwZSnXuE FqgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759839650; x=1760444450; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oLik2R41JKKg66R9u/7D437C5tFPGxIDYan0Bcp5bSc=; b=tOZ70nzyPX7id+d4EUeO7vV6uitA0Eacqt4XGzxeUBBOn7dgKK+axqK/8Uok9OptWC AVYQRyo28F6E34vK/eJV6amGOhLQuPjcaFuqYdSMBnzZzy/l+vNWBSujywnI0sdL34+e INr5Bi/TycBM42QW92lG+vxYfOO+Qb7feoCb1YIu+O8TX3LIWAteq5AfgNRi4hKgv5Rj X86kqHMwo1/YHYvF505YjRzsEH9lYEo7HPzdPWbksEu3+JaYJXNxRmEiuERAN3uXI4tM u++gbNefJ77RLSod9+bpSziBhfJHDfEZCDBcBsc1IQyI51xBs9oJHedKdrdk1+l1ZV8U RhrA== X-Forwarded-Encrypted: i=1; AJvYcCUk6g9x/u580H2+pYiRkbl5PYL+YhiSaEhovVg4HwxuVtHfqtB6T4kZ6ih75MMv0vOTYlKhVgUZ5ALwArw=@vger.kernel.org X-Gm-Message-State: AOJu0Yw2ilPTtJSH6Awn6pQembaeMIuYqjX2V1iiOlUR+PZZ6iINdx1u 4Y/5G+IhlumvGKkectGiBKZiLW9hn+bnXYbZ/UpO83zG5T+UhZJQ5F74 X-Gm-Gg: ASbGncvbt7y2+y1K+B+3ET+qLny1MbP8ZYgj5/W/p8YR8Z6qSCR+ZmPPomJB4Iqsg5q SGiGAVUiNeLYZgr9AQJBNFxzzXwbRNOSnKsjEQ0lqaUKUnzu5i+Jf4IjJJp2rjOwA5Z3PWsMGPn nFh+yQxAAV9mqXntkDohP1XbF96XLsWuHr0la1Aa4+YDZ9UG6hUCQnFHwoERK7yELxf0+emFycv pIfCITMp2LLfBWRMNnIm1qLiXpSXw8ksNUQINO9QoMOarB44D/1TJ2FPffcMfYGVzmm2NqTy+n6 DGw9SFZr5NT+C+OfBnaQlkI7BhxI9SjDZ/wKz/dwO/6KYGobhwi2aWkhs6qNDhM5Z7LL2aKydCJ h0P4ENxWKPkMEYtn/vLV3eY7VmHNF/j4ZZvBGL3Hi X-Google-Smtp-Source: AGHT+IHa1fO8cLLeRNsClbO4Do0jlv/6LzDieia1Qj8zuoJTvM9U/A0btWcUHfi7JFPOE+OrJ7f71g== X-Received: by 2002:a05:6512:3a92:b0:586:2e4b:22c5 with SMTP id 2adb3069b0e04-58cbbfc331dmr4623770e87.56.1759839649666; Tue, 07 Oct 2025 05:20:49 -0700 (PDT) Received: from localhost.localdomain ([2001:9b1:d5a0:a500::24b]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-58b01141151sm6061947e87.59.2025.10.07.05.20.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 05:20:48 -0700 (PDT) From: "Uladzislau Rezki (Sony)" To: linux-mm@kvack.org, Andrew Morton Cc: Michal Hocko , Baoquan He , LKML , Uladzislau Rezki , Michal Hocko Subject: [PATCH v4 09/10] mm/vmalloc: Update __vmalloc_node_range() documentation Date: Tue, 7 Oct 2025 14:20:34 +0200 Message-ID: <20251007122035.56347-10-urezki@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251007122035.56347-1-urezki@gmail.com> References: <20251007122035.56347-1-urezki@gmail.com> 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" __vmalloc() function now supports non-blocking flags such as GFP_ATOMIC and GFP_NOWAIT. Update the documentation accordingly. Acked-by: Michal Hocko Signed-off-by: Uladzislau Rezki (Sony) --- mm/vmalloc.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/mm/vmalloc.c b/mm/vmalloc.c index d7e7049e01f8..9a63c91c6150 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -3881,19 +3881,20 @@ static void *__vmalloc_area_node(struct vm_struct *= area, gfp_t gfp_mask, * @caller: caller's return address * * Allocate enough pages to cover @size from the page level - * allocator with @gfp_mask flags. Please note that the full set of gfp - * flags are not supported. GFP_KERNEL, GFP_NOFS and GFP_NOIO are all - * supported. - * Zone modifiers are not supported. From the reclaim modifiers - * __GFP_DIRECT_RECLAIM is required (aka GFP_NOWAIT is not supported) - * and only __GFP_NOFAIL is supported (i.e. __GFP_NORETRY and - * __GFP_RETRY_MAYFAIL are not supported). + * allocator with @gfp_mask flags and map them into contiguous + * virtual range with protection @prot. * - * __GFP_NOWARN can be used to suppress failures messages. + * Supported GFP classes: %GFP_KERNEL, %GFP_ATOMIC, %GFP_NOWAIT, + * %GFP_NOFS and %GFP_NOIO. Zone modifiers are not supported. + * Please note %GFP_ATOMIC and %GFP_NOWAIT are supported only + * by __vmalloc(). * - * Map them into contiguous kernel virtual space, using a pagetable - * protection of @prot. + * Retry modifiers: only %__GFP_NOFAIL is supported; %__GFP_NORETRY + * and %__GFP_RETRY_MAYFAIL are not supported. * + * %__GFP_NOWARN can be used to suppress failure messages. + * + * Can not be called from interrupt nor NMI contexts. * Return: the address of the area or %NULL on failure */ void *__vmalloc_node_range_noprof(unsigned long size, unsigned long align, --=20 2.47.3 From nobody Sat Feb 7 19:08:23 2026 Received: from mail-lf1-f45.google.com (mail-lf1-f45.google.com [209.85.167.45]) (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 0F7CA2E0927 for ; Tue, 7 Oct 2025 12:20:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759839654; cv=none; b=tmFV8hAGLv7KarD+pmgVRPmX1yx4Cqid5xiQ21tycTN9n8+05jj5oy0ZDT/dUx/eClLf3SzHjxatxdUzlvNWTfhPwom1EambRuP6CgdEeEk11qwaaULeCE9uFyUZ9Et/ASt1d8NfCi/CYVnKHzZW8KaN2ubR4oCOS34PUZunovM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759839654; c=relaxed/simple; bh=BZ744rPyTvPlpKIvtyJ5im9XXhgJMtaH0OmahL3Q9qk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tIFncz5HpBtn1DVyiIOZHLRBTb8lu0HHzcSGmjcTj8pre/wfdmA6zR9wPiFNKFAiDW3NTUsCN6D2oQ7Jz4OpsCXC2hYLOG2F5/Tx3beBqDT9bNW/UfgnPahi+gmC2nAikuqtVMhw30+Df3xwrJX+SnCHmynO/32xVpY5uc4Yxhs= 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=VXvaiUMQ; arc=none smtp.client-ip=209.85.167.45 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="VXvaiUMQ" Received: by mail-lf1-f45.google.com with SMTP id 2adb3069b0e04-57bb7ee3142so7357330e87.0 for ; Tue, 07 Oct 2025 05:20:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1759839651; x=1760444451; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=KootqZKBoInJ70ZxwqKSLGt1yUrzmx1MeMaiDcSe4Sc=; b=VXvaiUMQckNvakkzbBL2LT/j/eVu61DoJcscmi4Vl8oz/aUTrU00HkvlXbtffiKHV3 0WJuz2fNS/q0TanbX04TFl6HJ2Sd0uKE/u8nUR7HDbwVXz/AUXKM8GUnl7rTYqwZHdfC KI3/BJENqXKmq1csXyjU5Qvvgkh+hPRLgKbbuzbRlZ8b2WOZYJjwZsGJogIHRBIAjsqp UyE/grmGxO0F/TcqwzBukNIccZy+xZjjODFSm5P7X4m4QFQ2KRk634Fygj+d05u2wpQe j7YOw9GQIU8cHZaHGL/gLKZHzIRaO7pLkLsBXKbzp3fW5A/T3KlG0lMLyUJ0qqdmMGuC ckAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759839651; x=1760444451; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KootqZKBoInJ70ZxwqKSLGt1yUrzmx1MeMaiDcSe4Sc=; b=NugsTRA1gvBqzSC58/qrZfJr9z7TEQjl8wg/dl6VO4iHaKHVTQpB1C2B0mOXqYpCU4 j6HjFPoscrKZww5cvQAzV1So60STcx4UhWlgGv5zqygQsI1Iaa85ZLkIYuFGLB08R7TU VrAfp2p7IxHZjO2rAtyfJ/uxJY4sbOfsXwf0pUTnhpUxasKqpa61oLFUc/U5Gdn0S4UC mtt0WI5A8DaiPmJ0VzcVXqMzvirYDROEzVLlFE4L9GNO8bPb+AC8gDymE/VQ5Ke1O2C1 spSYp5UNzIy41OuV4fQCXrF83TLLZ36wKpUSdbW/6AhHb0rALPWkax8N69DaN6IOtdkP mEqQ== X-Forwarded-Encrypted: i=1; AJvYcCWrJ89pxg1J+SPgg69ciEKq9MrMKbzSlisrBUb5W7I8/IdKqBV1UPGO3kzrre4GODjf2s/S0yz19gI3KWo=@vger.kernel.org X-Gm-Message-State: AOJu0Yw/V3EBwMqQcdMXQeTJh+UXOpd5pPvJ57dRuWYiZFZXgQPxkDIk RA1GagXcq2BUgXHcAicvgfnURH+yyDdUBHG0Jar1a4CMkJIP6c8BlKZ3 X-Gm-Gg: ASbGncuQC/FYAuF1HJ9t/gpl9KdHhGUOqgYyqGGYb/LltxNK8rlMKvW8WvkmyQaulMc X0/Mky4cLAiawRrrYo9C7Kf2CYcLZL+68K+jrJxjYNZ8mZLP/nyQx6qcsGiS9jjIBahH3hg9aXA tD4dmsOikaEov8hpvE7i8Mbki2w7cz+z/hwGLzfEkqz3F77na7bhOeaAL350DmJ5CZ3BUG+2+f9 RCMa6LvJP8fNnjOjGEjuPeVuRA3OtD0M3jbZ050MjHCncivhd8ijVL/Q4oj+ClfWs2wV+ZtSVgC f4aZ4wrjizhgN2VikxsRiA4H9stfeUXx2wFojxAtAQAK6NP353CDBKfL3LujJLTvqrCcVztu3Pf cD/B4C1GkL1FlhIW4ZG/lsL3ypEn3OF1IgexqrEru X-Google-Smtp-Source: AGHT+IFPlX7EPJQfg4e0mUBd4WzqghnQVqlWdKVCToHj5t8/+iKkFTtFbq1tKN4IiRVof3fLjH1x1w== X-Received: by 2002:a05:6512:230c:b0:56c:386b:9bc with SMTP id 2adb3069b0e04-58cb956bb11mr4722191e87.5.1759839651048; Tue, 07 Oct 2025 05:20:51 -0700 (PDT) Received: from localhost.localdomain ([2001:9b1:d5a0:a500::24b]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-58b01141151sm6061947e87.59.2025.10.07.05.20.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 05:20:50 -0700 (PDT) From: "Uladzislau Rezki (Sony)" To: linux-mm@kvack.org, Andrew Morton Cc: Michal Hocko , Baoquan He , LKML , Uladzislau Rezki , Michal Hocko Subject: [PATCH v4 10/10] mm: kvmalloc: Add non-blocking support for vmalloc Date: Tue, 7 Oct 2025 14:20:35 +0200 Message-ID: <20251007122035.56347-11-urezki@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251007122035.56347-1-urezki@gmail.com> References: <20251007122035.56347-1-urezki@gmail.com> 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" Extend __kvmalloc_node_noprof() to handle non-blocking GFP flags (GFP_NOWAIT and GFP_ATOMIC). Previously such flags were rejected, returning NULL. With this change: - kvmalloc() can fall back to vmalloc() if non-blocking contexts; - for non-blocking allocations the VM_ALLOW_HUGE_VMAP option is disabled, since the huge mapping path still contains might_sleep(); - documentation update to reflect that GFP_NOWAIT and GFP_ATOMIC are now supported. Acked-by: Michal Hocko Reviewed-by: Baoquan He Signed-off-by: Uladzislau Rezki (Sony) --- mm/slub.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/mm/slub.c b/mm/slub.c index 584a5ff1828b..3de0719e24e9 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -7018,7 +7018,7 @@ static gfp_t kmalloc_gfp_adjust(gfp_t flags, size_t s= ize) * Uses kmalloc to get the memory but if the allocation fails then falls b= ack * to the vmalloc allocator. Use kvfree for freeing the memory. * - * GFP_NOWAIT and GFP_ATOMIC are not supported, neither is the __GFP_NORET= RY modifier. + * GFP_NOWAIT and GFP_ATOMIC are supported, the __GFP_NORETRY modifier is = not. * __GFP_RETRY_MAYFAIL is supported, and it should be used only if kmalloc= is * preferable to the vmalloc fallback, due to visible performance drawback= s. * @@ -7027,6 +7027,7 @@ static gfp_t kmalloc_gfp_adjust(gfp_t flags, size_t s= ize) void *__kvmalloc_node_noprof(DECL_BUCKET_PARAMS(size, b), unsigned long al= ign, gfp_t flags, int node) { + bool allow_block; void *ret; =20 /* @@ -7039,16 +7040,22 @@ void *__kvmalloc_node_noprof(DECL_BUCKET_PARAMS(siz= e, b), unsigned long align, if (ret || size <=3D PAGE_SIZE) return ret; =20 - /* non-sleeping allocations are not supported by vmalloc */ - if (!gfpflags_allow_blocking(flags)) - return NULL; - /* Don't even allow crazy sizes */ if (unlikely(size > INT_MAX)) { WARN_ON_ONCE(!(flags & __GFP_NOWARN)); return NULL; } =20 + /* + * For non-blocking the VM_ALLOW_HUGE_VMAP is not used + * because the huge-mapping path in vmalloc contains at + * least one might_sleep() call. + * + * TODO: Revise huge-mapping path to support non-blocking + * flags. + */ + allow_block =3D gfpflags_allow_blocking(flags); + /* * kvmalloc() can always use VM_ALLOW_HUGE_VMAP, * since the callers already cannot assume anything @@ -7056,7 +7063,7 @@ void *__kvmalloc_node_noprof(DECL_BUCKET_PARAMS(size,= b), unsigned long align, * protection games. */ return __vmalloc_node_range_noprof(size, align, VMALLOC_START, VMALLOC_EN= D, - flags, PAGE_KERNEL, VM_ALLOW_HUGE_VMAP, + flags, PAGE_KERNEL, allow_block ? VM_ALLOW_HUGE_VMAP:0, node, __builtin_return_address(0)); } EXPORT_SYMBOL(__kvmalloc_node_noprof); --=20 2.47.3