There is an off-by-one error in the upper limit to a for-loop that causes an out-of-bounds read error on the array damon_sysfs_wmark_metric_strs. Fix the comparison by replacing the <= operator with <. Fixes: 8f614da9d987 ("mm/damon/sysfs: support DAMOS watermarks") Signed-off-by: Colin Ian King <colin.i.king@xxxxxxxxx> --- mm/damon/sysfs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/damon/sysfs.c b/mm/damon/sysfs.c index 32a9d21c0db5..fda2506c676f 100644 --- a/mm/damon/sysfs.c +++ b/mm/damon/sysfs.c @@ -266,7 +266,7 @@ static ssize_t metric_store(struct kobject *kobj, struct kobj_attribute *attr, struct damon_sysfs_watermarks, kobj); enum damos_wmark_metric metric; - for (metric = 0; metric <= NR_DAMOS_WMARK_METRICS; metric++) { + for (metric = 0; metric < NR_DAMOS_WMARK_METRICS; metric++) { if (sysfs_streq(buf, damon_sysfs_wmark_metric_strs[metric])) { watermarks->metric = metric; return count; -- 2.34.1