From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-lj1-f176.google.com (mail-lj1-f176.google.com [209.85.208.176]) (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 129753469F6 for ; Mon, 13 Apr 2026 19:26:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.176 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776108411; cv=none; b=POw78uT2I+4NhfUU0KPv+vUKSJKKzGQyyRwILo09N5zH7NaXP+b7FFrla5heaWMyUnNh/3giRfrVbJpnG2ZlcQQxPIPbKTjOBnHkl9jiQrM1Is1ZdtXikd5Qlnnz5miIGL6ACyzmutIsvjpQOXxmhgIdNAiAfGdotBv9VtflDjY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776108411; c=relaxed/simple; bh=RSH1PMIUdr+dvUF9RK/lpWJRWvghUBzmx0I+NUVcmEE=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=dwahe52dLlpxemP6tHAc7CKu03JggWRM6AWKdbEpIzOEH92J8PHSR3zmhw2b/D28eCu3ArvJejlyCwPY0QuYfPEXaK/3ihT0MQdhVJXMjo2ERBgA/ZBEX4CwhckFAX2bffAQeOUJYgCS37T/SxnImRJI4PQixzN+das0/KfmLqo= 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=M+SmKk4U; arc=none smtp.client-ip=209.85.208.176 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="M+SmKk4U" Received: by mail-lj1-f176.google.com with SMTP id 38308e7fff4ca-38be5e86918so48808051fa.3 for ; Mon, 13 Apr 2026 12:26:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776108408; x=1776713208; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=yyAV4CsxeBNj9l27xq0ng1Ca7pq+jXSdxBThfycX8Bg=; b=M+SmKk4UDy4D9uoL2Id8cKEPyUrdn7drTihoq+/6uDtjIAQ3E4tzyonbnF8DYr/UGa XgQmeeJKH/LxvFd4AP7xvj5De9oZUaTLjrXlFtekmu3cHIGo8H9KfuaU6N3s4ZzuQG/G EKhXOcdA9LWqZWqXh8iM/0ZubFkyY8b6N6UzFUJmujd+jo8VwYy+HaeFileBnSGs3ewK /dO8LdXdYdGAhW3jOKMVs6xImQW/6hWtWZK35uONjcz/hA1LsRf7BmbpLNBDqxNUObS2 rOxEJSxpOI2bghbs9rtQiT4XvysBrRD/7n4GGUYP+isJ9TV31m9dTMHTSG+OCdsd7m9s v1GQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776108408; x=1776713208; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=yyAV4CsxeBNj9l27xq0ng1Ca7pq+jXSdxBThfycX8Bg=; b=njllErm0nAHDU3bHG8xF6XG2tFysbTkz+90Z+MXiEi1zqpw7BqAarQ2nDf4kJMbEK1 fFEQUuQuX3GXOCV3Op4i5IGYe3qqjDoxtEo5nFTplNbUCpS9UIL6YWAf02XfJf0hkq6Z m2yQqRoeIGV2bDs9khOyxZklEK4yjdghI5sXkXZR2Zs/F90jl9N9bl1hcli27oEm2wAc RMZRsdwFcivejO3gb1hSriE6TVTZRHpbrNn+jcKvYJSJLKKV9hDFSN2q7Cje0/eHKODH 6xCBr4iy7RY1EkoKl/KbVfaB4CkU2JxLq9boQ5NBiz3hFZiHwq7ZxxrQdMPXtsqSMNin xTbw== X-Forwarded-Encrypted: i=1; AFNElJ/NGHToOoYlMw2TAIn9O9MQ24mkLMJ6EVJscEIhamY75UFzTmmq/PbAwiqkuH//kwmYdOld3ogzx+pP38E=@vger.kernel.org X-Gm-Message-State: AOJu0YzLAMZ7swHLnt4G+MLTBlqtUGsCU5vl0nV1BN5rzzxBaASKRp0D g+toJpmyUw2Aka5uB156bYVZmEz7RxkHcpqJbvVzDFouKNL5yI2wqaEh X-Gm-Gg: AeBDieuKEOiKk21jCuFsk3qlU1eEJYv6q0wbnuYACDhzK/1rYq2H+a3yShLji2aYfbL f5y2iPUI2Vmga+iG9lGN30ZIT9kWroGqp8EmwjDKkeOQOf3sFmiqBzxQlUKD8y4RXAnQ+cthWA5 +BeTPtMdgwPla3e4thCtrMNumEYZTC0E0mRk3BUW4twR4I7CAa/LYPec/83w8E3fADaEHWe8kFa apFCTeoO9nEJMerSJS1tJqYSB2FQmcKiDYdz+WVrtYb3TjZlWRa5Y/gu1HJw/c0yznCqGor2/DI IobA5Kzlqx7g8GJomTVsuikoTsCEohtb5TyvW6XeM6lIcwxY3gIYocu93i6mqm6r8rkK6yzT2u6 NkWKiXaHJnsaiqAb2x576OOVoqIMfQZiEwdqQlEkV9ytiXiIj2m+eliOvIyNF6F2B99cMpEOoqd rdIQlvzZG/k1LjVwo= X-Received: by 2002:a05:651c:144a:b0:38e:827b:98f5 with SMTP id 38308e7fff4ca-38e827b99f4mr12058721fa.35.1776108407898; Mon, 13 Apr 2026 12:26:47 -0700 (PDT) Received: from localhost.localdomain ([2001:9b1:d5a0:a500::24b]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-38e495461b7sm26191241fa.26.2026.04.13.12.26.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Apr 2026 12:26:47 -0700 (PDT) From: "Uladzislau Rezki (Sony)" To: linux-mm@kvack.org, Andrew Morton Cc: Baoquan He , LKML , Uladzislau Rezki , stable@vger.kernel.org, chenyichong Subject: [PATCH] mm/vmalloc: Take vmap_purge_lock in shrinker Date: Mon, 13 Apr 2026 21:26:46 +0200 Message-ID: <20260413192646.14683-1-urezki@gmail.com> X-Mailer: git-send-email 2.47.3 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit decay_va_pool_node() can be invoked concurrently from two paths: __purge_vmap_area_lazy() when pools are being purged, and the shrinker via vmap_node_shrink_scan(). However, decay_va_pool_node() is not safe to run concurrently, and the shrinker path currently lacks serialization, leading to races and possible leaks. Protect decay_va_pool_node() by taking vmap_purge_lock in the shrinker path to ensure serialization with purge users. Cc: stable@vger.kernel.org Cc: chenyichong Fixes: 7679ba6b36db ("mm: vmalloc: add a shrinker to drain vmap pools") Signed-off-by: Uladzislau Rezki (Sony) --- mm/vmalloc.c | 1 + 1 file changed, 1 insertion(+) diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 61caa55a4402..676851d5cfe7 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -5416,6 +5416,7 @@ vmap_node_shrink_scan(struct shrinker *shrink, struct shrink_control *sc) { struct vmap_node *vn; + guard(mutex)(&vmap_purge_lock); for_each_vmap_node(vn) decay_va_pool_node(vn, true); -- 2.47.3