mm-damon-core-validate-damos_quota_goal-nid-for-node_mem_usedfree_bp.patch removed from -mm tree
The quilt patch titled
Subject: mm/damon/core: validate damos_quota_goal->nid for node_mem_{used,free}_bphas been removed from the -mm tree. Its filename was
mm-damon-core-validate-damos_quota_goal-nid-for-node_mem_usedfree_bp.patch
This patch was dropped because it was merged into the mm-stable branch of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
------------------------------------------------------
From: SeongJae Park <[email protected]>
Subject: mm/damon/core: validate damos_quota_goal->nid for node_mem_{used,free}_bp
Date: Sat, 28 Mar 2026 21:38:59 -0700
Patch series "mm/damon/core: validate damos_quota_goal->nid".
node_mem[cg]_{used,free}_bp DAMOS quota goals receive the node id. The node id is used for si_meminfo_node() and NODE_DATA() without proper validation. As a result, privileged users can trigger an out of bounds memory access using DAMON_SYSFS. Fix the issues.
The issue was originally reported [1] with a fix by another author. The original author announced [2] that they will stop working including the fix that was still in the review stage. Hence I'm restarting this.
This patch (of 2):
Users can set damos_quota_goal->nid with arbitrary value for node_mem_{used,free}_bp. But DAMON core is using those for si_meminfo_node() without the validation of the value. This can result in out of bounds memory access. The issue can actually triggered using DAMON user-space tool (damo), like below.
$ sudo ./damo start --damos_action stat \
--damos_quota_goal node_mem_used_bp 50% -1 \
--damos_quota_interval 1s
$ sudo dmesg
[...]
[ 65.565986] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000098Fix this issue by adding the validation of the given node. If an invalid node id is given, it returns 0% for used memory ratio, and 100% for free memory ratio.
---
mm/damon/core.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
mm/damon/core.c renamed from mm/damon/core.c~mm-damon-core-validate-damos_quota_goal-nid-for-node_mem_usedfree_bp +12 -0
@@ -2217,12 +2217,24 @@ static inline u64 damos_get_some_mem_psi#endif /* CONFIG_PSI */ #ifdef CONFIG_NUMA +static bool invalid_mem_node (int nid) +{ +return nid <0 || nid >=MAX_NUMNODES || !node_state (nid,N_MEMORY ); +} +static __kernel_ulong_t damos_get_node_mem_bp (struct damos_quota_goal *goal) {struct sysinfo i;__kernel_ulong_t numerator; +if (invalid_mem_node (goal->nid)) { +if (goal->metric ==DAMOS_QUOTA_NODE_MEM_USED_BP ) +return 0 ; +else /* DAMOS_QUOTA_NODE_MEM_FREE_BP */ +return 10000 ; + } +si_meminfo_node (&i, goal->nid);if (goal->metric ==DAMOS_QUOTA_NODE_MEM_USED_BP ) numerator = i.totalram - i.freeram;
_
Patches currently in -mm which might be from [email protected] are
mm-damon-core-disallow-time-quota-setting-zero-esz.patch mm-damon-core-disallow-non-power-of-two-min_region_sz-on-damon_start.patch