From nobody Sun Dec 14 06:37:38 2025 Received: from mail-pf1-f179.google.com (mail-pf1-f179.google.com [209.85.210.179]) (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 EB66627A92E for ; Wed, 10 Dec 2025 05:47:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765345649; cv=none; b=hSl0kyNVhc6T5O1h9rsBngdKFTjqcDSGa6S24Mw9iEeivX7KyFJEkA29onGfggwHNb3IhcWi49LIX2vfyZXwUtFcqIaOTCHqpTamN6UD1q5OuK8hpM9tWPRKjgIg9/V/h7vJQMEOy9P1VDEdl9HTwxBYn6F3GAz8ZxdHrFPp5VY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765345649; c=relaxed/simple; bh=iXyaFAhfE/nAYuhTqSDEgou2JXUnvr/ADdInEDndNn8=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=CbOVgj2dlyf/oxET/Gr14+49NTqCblzZc/wEi0d8H68DJErVMUYmXYMAfUpyrnoKMIv5PQ26Eav44mhwkKNQa17QiV0xMLEu+LQLXBmELjR79NyKAXCZ/e+cNmnCP/PCgJXqgU7IfZIY6gz/qanae/buZj+JtBJXRwFM6ZRvzYk= 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=lrxMiNm7; arc=none smtp.client-ip=209.85.210.179 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="lrxMiNm7" Received: by mail-pf1-f179.google.com with SMTP id d2e1a72fcca58-7bf0ad0cb87so7582088b3a.2 for ; Tue, 09 Dec 2025 21:47:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765345647; x=1765950447; 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=ZjPKi0vMLz/w6qpgbXNP/kuhIoVt0nM5db2+kyo0mvU=; b=lrxMiNm7j7FagzMLwpi451HCbYNWYrU3YjR740NBG5j4yXqdp8g+0aWSOI24K/yas1 FX/UkHQdXW5APSs1ESYc0p8JHFOVbRIFP+zbpjYM1tay0IGRJ3SqVYm7wwtdEzOElnjI pKGhC04YvX0Ze0CfDz7uhrOhsG9eyvrUkF/bbCcCsoyXI5PESbXD3ffiARZ/c7MiOhxX AfcSH3ToIJJLbyu6OfqoiQae51ULZQVv0lqcthNVTspynEw7LrT0dpuqn/TEeV3gMbjO IHPCQVvKi+qNuePfXMxTfBz6911pzZqD21TX8E2rXBjLeEu8bKlUDy2dmDPgI32LG95P fYeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765345647; x=1765950447; 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=ZjPKi0vMLz/w6qpgbXNP/kuhIoVt0nM5db2+kyo0mvU=; b=ZM7fWktXWZ0syvP5rnjTSYnaqv3G2kYLpoxJfFVmuIEvQ0QzOUV5rSqNQB94p9UBIV ZqDUk6h9s5gN24nbgH0qzE3MQsn7QLhgDFLmpM3pTf0CrP2wz9APxouY0jO59QyNbVlF qSk94J3jSodOpoEGUaryCJHLwsNdmq484iZQnfMjw7qteZggMwaEdGEv3bfrd4ww8AKe 723DdmQ9bPAp/wIyW5BIZI/Ekcvt5ka1YS4rOr3hDIzsYBrqs3LfDPCoCpicIq31cNQE q2xiRgARPiT8UmwY6tKPdr1WDWnpcgEJkM+oNzwKolwrPlf3lqBaSGpZr9pgs3Rzd1dk ImTg== X-Forwarded-Encrypted: i=1; AJvYcCUkswn9B6cmvGSP2oYqkhI8PPKHsohYvJyVrY/glYw09CEZH6TgFHXZS32nlwBTWCgH9CcR1btxT/TAp2w=@vger.kernel.org X-Gm-Message-State: AOJu0YyZ7vqQlCnDmVnsUH8hF0g9t96p0Q7qebttHW/FaY8qK5n57q+o M5/3xleC/2hwqgZEda3jTN7cG8n4FFltJWv7L0TdEmTlRoweUXXkRT4t X-Gm-Gg: ASbGncv3jT2LDp0f4CWRxqCti5EkLUW2DtIJapbCkvzND2YILnNuNCnBz7sBW6ZUwQC RUUwmh+2UK62Tvq/9ccx6wA0jZCeXMYYxLVltqxSuWfLUic/KTjq2uBrHkbjNMgU5eut3ZQVghf 5Iz5AQ+8D7vZ3hVucbKC0hLZIjHukZV4ZtfTA4bDma4BT4uw1JDv+l1JNAoNluRJ/OMCurIH2zC z3XZJBa/6kY/uWKtlvBdxP/VjIF8QD/GGjDWrckjfoBC2q7z9KFoAAhdsq8zBjiTxXVM4U/4CmI dRp8WBtAZp7lnrCKUBJkSN548+VoEOYF9l1fzd2L4FUzGQHaszv6I/bq/7plotMk2Z4bwNTAJ9L SuNQDbtZTONDBCE5EPoi16O9lIi3tU3SxcfywdTMIgZg3HPl/6YAV1QRmH8kcD0NiLVUn1bIHlP JJJw45Jw16XJGDahz7j56fefc+WQf2DA== X-Google-Smtp-Source: AGHT+IEwc7JOsazcwKpzU7ZHBl+xfNwWtdPzPxJDIDg8Q6HfKB4pbwai0Nw0QrSKvHi5o+uJJlmImg== X-Received: by 2002:a05:6a00:cd2:b0:7f0:2d21:878e with SMTP id d2e1a72fcca58-7f22e0a14admr1193730b3a.25.1765345647036; Tue, 09 Dec 2025 21:47:27 -0800 (PST) Received: from LilGuy ([2409:40c2:1295:13e8:41e8:60cd:6181:4fad]) by smtp.googlemail.com with ESMTPSA id d2e1a72fcca58-7e29f3e52c8sm17808011b3a.10.2025.12.09.21.47.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Dec 2025 21:47:26 -0800 (PST) From: Swaraj Gaikwad To: SeongJae Park , Andrew Morton , damon@lists.linux.dev (open list:DAMON), linux-mm@kvack.org (open list:DAMON), linux-kernel@vger.kernel.org (open list) Cc: skhan@linuxfoundation.org, david.hunter.linux@gmail.com, Swaraj Gaikwad Subject: [PATCH] mm/damon/sysfs: check for online node in target_nid_store Date: Wed, 10 Dec 2025 11:17:07 +0000 Message-ID: <20251210111708.46959-1-swarajgaikwad1925@gmail.com> X-Mailer: git-send-email 2.52.0 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" The 'target_nid_store' function previously accepted any integer value written to the 'target_nid' sysfs file without validation. This allowed users to set invalid Node IDs (e.g., -1 or 9999). This patch adds a check using 'node_online(nid)' to ensure the input is a valid, online node. If the node is invalid, it returns -EINVAL. This change also resolves the TODO comment "error handling for target_nid range". Test: Built kernel successfully with CONFIG_DAMON_SYSFS=3Dy. Verified the fix using a bash script that first creates a DAMON scheme, resets 'target_nid' to a valid value (0), and then attempts to write invalid values (9999 and -1). Confirmed that writing 9999 and -1 previously succeeded (incorrectly), but now fail by rejecting the write and retaining the valid value (0) as expected. Signed-off-by: Swaraj Gaikwad --- mm/damon/sysfs-schemes.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/mm/damon/sysfs-schemes.c b/mm/damon/sysfs-schemes.c index 6536f16006c9..b18321e64423 100644 --- a/mm/damon/sysfs-schemes.c +++ b/mm/damon/sysfs-schemes.c @@ -2244,11 +2244,18 @@ static ssize_t target_nid_store(struct kobject *kob= j, struct damon_sysfs_scheme *scheme =3D container_of(kobj, struct damon_sysfs_scheme, kobj); int err =3D 0; + int nid; - /* TODO: error handling for target_nid range. */ - err =3D kstrtoint(buf, 0, &scheme->target_nid); + err =3D kstrtoint(buf, 0, &nid); + if (err) + return err; - return err ? err : count; + if (!node_online(nid)) + return -EINVAL; + + scheme->target_nid =3D nid; + + return count; } static void damon_sysfs_scheme_release(struct kobject *kobj) base-commit: e9a6fb0bcdd7609be6969112f3fbfcce3b1d4a7c -- 2.52.0