From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=209.85.210.176 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1793704658; b=tY6NrZG4ZqR3bEZYU7K8WOd1duRoNXkAzLH0iFoKzhocGwGV7Zg36LMgabyfEXZUuEUM e3rECpOVKIcDqEwctohGwevhLYqZYNz/musNNpEn6YMCs5ftLBtwSH+lYdpPossAMePhZ JqOyRmJxy3H3rvOOxdAEK8BkJBrJ66mmSwbhYvbbi5dSr/TDe+6Ntpk/TcvPsdzXV62sA IZKZgLpt4LZZ+lOEbT0ad00sgiDqYVoS//wn7q6dIGR2WPl4P2mhC0HUgd176UJxSgno/ Z+EhnVlMhxCtKgV4phc2CdauSCl7/csq66dJaWJzEcPDSTdjNuQTJqHNhbeVAY1gR+w== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1793704658; h=DMARC-Filter:Received:DKIM-Signature:X-Google-DKIM-Signature: X-Forwarded-Encrypted:X-Gm-Message-State:X-Gm-Gg:X-Received:Received: From:To:Cc:Subject:Date:Message-ID:X-Mailer:MIME-Version: Content-Transfer-Encoding; bh=rO8PyIeQTJjW9jZC3eDavQXhSeNQrxCH5KHGWPFOq/g=; b=QTKmL4n8/yQPKI7fRethXWdI4G7vrVFT3E2i/XK6ikgupIXi96ugei4rMvsmgM6YlJ67 a0jpO2FSYc+a6OIkmSDs0ubwpFTUulfGSB/PcfYQ5e64ue4KJyxWOJQeRgDZ44G4SJPxo 9mg/GaYfGAeyv3KZbjojeykvTtkMcqSsUZ48mahIpfPOrz0ePGWAGlh94GbSm5fCRDj93 3WCC1jkLOT3/RYfYlubL6lhlU1A1mrKUUKiMgzHemYdlpBstAJ0YXqxqSYiMp/iLgRGWS vMzi5X9DCj5yLvZzaX9H20IQgmb2n+gJX/rvEh5RMe2Z0EGoLcY6rUVxcLr1a3Wwg4w== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20260707 header.b=pC00q7jq; arc=none smtp.remote-ip=209.85.210.176 Received: from mail-pf1-f176.google.com (mail-pf1-f176.google.com [209.85.210.176]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3F9D3606C5B2 for ; Tue, 3 Nov 2026 11:17:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 3F9D3606C5B2 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, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20260707 header.b=pC00q7jq Received: by mail-pf1-f176.google.com with SMTP id d2e1a72fcca58-8a070b3f44aso1340445b3a.2 for ; Tue, 03 Nov 2026 03:17:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20260707; t=1793704657; x=1794309457; 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:content-type; bh=rO8PyIeQTJjW9jZC3eDavQXhSeNQrxCH5KHGWPFOq/g=; b=pC00q7jqqQBbxlVHA5rOT/XIHx7ltpNjFk+cCBir1T0pdSFH28M7qzyByjbn3UDjkD QYtroc+dE6qSS+TgIQx1KpBMUpQ8N2fBm5I3HF17p+Mau2KDVYRlfXI81lMFGUXYu59Z Xn5ASiRkjyc09137mQy1qDtuKMMK1CeufA7R8yVeWObx5WJy57dyIyABIg1PIbX4VXG7 jawfmjK8SEx5iKYjoRg3Kv1ydaRnyXNg0XrFoMkxeoNw7+frDKMvg3EYax9tzjAwVsC/ UNfZZFzf9SCSbjqY+loz1zg09jWsD2VRXpgfAMwuOPyXc8CeULVPtOpRQcuHseANL7/v t+PQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1793704657; x=1794309457; 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:content-type; bh=rO8PyIeQTJjW9jZC3eDavQXhSeNQrxCH5KHGWPFOq/g=; b=IlFZkP3rxcE6KpA+1KKgiI2w1R0yf6RUoGYOoNHvVn4QHtyHo6KzM7tJPptt0z1rf2 EmwH7qfcRMxRCMeOFS6n9SfKr0aVHq4gU3bcpG5YjYb+s2CtVdI3aQtXs2Z//12V2eU+ /qy4u8PqAScZ8qP2O6NyN+Hnv90S6gSjbb8vwCpOo0xTN7enm21/L5KwwLgvQnDRxM/t 1IRYADpXDIXtjYtY4NwUwFs48w6ldbdLnx0gXTdWvjRpvDrEzo+f70ecct9iQ1TX2XJ4 TGuJOhskLFnLh3n+1h4OcZnpX7yIdJwczdRGR8TqfL81GTK7veB66QLg2nD+pv2LH8FF lAmA== X-Forwarded-Encrypted: i=1; AKwUvBxHlUM/pJNT5mGYX11Drn2jIGFI4LFyT9LPMctCjJfoyvR6MBjjP7cHB4GTBqEiqxNA5r9Sq4eakrJpUAA=@vger.kernel.org X-Gm-Message-State: APuU4Z9/bKWo1yHVOEp907W+O6FK+mOhYfbBbqZRYSDGsprvNniRQmIc /4/48nl1twts8arpp+4RWTNrISJDA8VwUtuyhw/o+yeb50uB9kRkkgID X-Gm-Gg: AYBFou3Awg+s3JawXHgptVtUIf70/qmnRcqfHUY+2DUpJ06wuKMx751PvaE11M4k0AD hu8r/rLF/H6hdd2NvgqAe0qiup4XUOmuAqzT7y6b/mdy+juZIvpcexO615AMwMrphMvPi2MK0P+ +xqNRXzjnK7XRczcKXyW30aHHaren/wuJ0sYUC03r/u+3zYPiXGJtVxlATSvJHqJcIgtdQI7UMI /IczBu4aWF/+XBfwVo7pvIytRbrMf2p35MvRDv6jtOLwVAdv0Ys17dmMOKKzETjFb5JaPzNMEk6 U8TVa5VCov0ylJYOp9RQA2245wHZwPjZJcSnAp4UieOD0599Ly0RqlpVqW04I4YwBFCzlc5Wg+V anu+neeOer0sD1Q9JC4oTj+0TCFxn8DEN4199ZQ9YEvsXZeNTc/pCYiFjmyq6CqzM5FgxO/WrMS fjIdJ6C9NmEcXuqJnAdnVx46q+BwVXKoF6gwe2Q/42t38IP/9/KXihF2VCvgjlPyHDswgWcKK65 H18Z1kMq1PyMk1KndMqknzakj+aLIL/Hnq7mqzzueB6tSJ0ASbZSG/GPmv97NNguQeQ1vyIN19p k96CorlG2ZNsxuMRsnzhozxMjRjmSF2DjTQhc/LO5CRmqwM2BDjeH9ypCFCjFCYBgf0u X-Received: by 2002:a05:6a21:3216:b0:3e2:ad49:b24f with SMTP id adf61e73a8af0-3e928e47524mr11186434637.68.1793704656472; Tue, 03 Nov 2026 03:17:36 -0800 (PST) Received: from xiaolei-VMware-Virtual-Platform ([219.142.21.190]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8aadaf82a66sm3065147b3a.56.2026.11.03.03.17.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Nov 2026 03:17:36 -0800 (PST) From: "Xiaolei Wang (Kaihong)" To: sj@kernel.org, akpm@linux-foundation.org, david@kernel.org, ljs@kernel.org, error27@gmail.com, xiaoleiwangxiaolei@gmail.com Cc: damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, "Liam R. Howlett" , Michal Hocko , Mike Rapoport , Suren Baghdasaryan , Vlastimil Babka Subject: [PATCH] mm/damon/core: reject empty access pattern intervals on scheme commit Date: Tue, 3 Nov 2026 18:54:18 +0800 Message-ID: <20261103105418.362459-1-xiaoleiwangxiaolei@gmail.com> X-Mailer: git-send-email 2.53.0 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: 8bit DAMOS schemes accept access pattern bounds with min > max (e.g. min_sz_region > max_sz_region). No input path validates the bounds: damon_new_scheme() stores the pattern as is, and the sysfs ul_range stores are plain kstrtoul(). At runtime __damos_valid_target() evaluates "min <= x <= max" for each of the three pattern dimensions. A reversed interval is an empty set, so every region fails the check and the scheme silently never matches anything: nr_tried stays zero forever while the kdamond keeps running normally. With such a reversed interval, damo starts normally (rc=0, kdamond state=on), but nr_tried and nr_applied stay zero forever and the target RSS does not drop. The same holds for the watermarks thresholds, which must be monotonic (low <= mid <= high). Validate the access pattern and watermarks at the beginning of damos_commit(), through which both new schemes (damo start) and online updates (damo tune) pass. Fixes: 1f366e421c8f ("mm/damon/core: implement DAMON-based Operation Schemes (DAMOS)") Cc: stable@vger.kernel.org Cc: Liam R. Howlett Cc: Michal Hocko Cc: Mike Rapoport Cc: Suren Baghdasaryan Cc: Vlastimil Babka Signed-off-by: Xiaolei Wang (Kaihong) --- mm/damon/core.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/mm/damon/core.c b/mm/damon/core.c index eb1fcdabc007..865627bda240 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -1566,10 +1566,29 @@ static struct damos *damon_nth_scheme(int n, struct damon_ctx *ctx) return NULL; } +static int damos_validate_scheme(struct damos *s) +{ + struct damos_access_pattern *p = &s->pattern; + struct damos_watermarks *wmarks = &s->wmarks; + + if (p->min_sz_region > p->max_sz_region || + p->min_nr_accesses > p->max_nr_accesses || + p->min_age_region > p->max_age_region) + return -EINVAL; + if (wmarks->metric != DAMOS_WMARK_NONE && + (wmarks->low > wmarks->mid || wmarks->mid > wmarks->high)) + return -EINVAL; + return 0; +} + static int damos_commit(struct damos *dst, struct damos *src) { int err; + err = damos_validate_scheme(src); + if (err) + return err; + dst->pattern = src->pattern; dst->action = src->action; dst->apply_interval_us = src->apply_interval_us; -- 2.53.0