[PATCH] mm/mempolicy: Fix weighted interleave auto sysfs name

From: Joshua Hahn

Date: Tue Apr 07 2026 - 10:20:35 EST


The __ATTR macro is a utility that makes defining kobj_attributes easier
by stringfying the name, verifying the mode, and setting the show/store
fields in a single initializer. It takes a raw token as the first value,
rather than a string, so that __ATTR family macros like __ATTR_RW can
token-paste it for inferring the _show / _store function names.

Commit e341f9c3c841 ("mm/mempolicy: Weighted Interleave Auto-tuning")
used the __ATTR macro to define the "auto" sysfs for weighted
interleave. A few months later, commit 2fb6915fa22d ("compiler_types.h:
add "auto" as a macro for "__auto_type"") introduced a #define macro
which expanded auto into __auto_type.

This led to the "auto" token passed into __ATTR to be expanded out into
__auto_type, and the sysfs entry to be displayed as __auto_type as well.

Expand out the __ATTR macro and directly pass a string "auto" instead of
the raw token 'auto' to prevent it from being expanded out. Also bypass
the VERIFY_OCTAL_PERMISSIONS check by triple checking that 0664 is
indeed the intended permissions for this sysfs file.

Before:
$ ls /sys/kernel/mm/mempolicy/weighted_interleave
__auto_type node0

After:
$ ls /sys/kernel/mm/mempolicy/weighted_interleave/
auto node0

Based on latest mm-new: 96881c429af1

Signed-off-by: Joshua Hahn <joshua.hahnjy@xxxxxxxxx>
---
mm/mempolicy.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index 62108a5b74c4e..845458a3c18f4 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -3782,9 +3782,11 @@ static void wi_state_free(void)
}
}

-static struct kobj_attribute wi_auto_attr =
- __ATTR(auto, 0664, weighted_interleave_auto_show,
- weighted_interleave_auto_store);
+static struct kobj_attribute wi_auto_attr = {
+ .attr = { .name = "auto", .mode = 0664 },
+ .show = weighted_interleave_auto_show,
+ .store = weighted_interleave_auto_store,
+};

static void wi_cleanup(void) {
sysfs_remove_file(&wi_group->wi_kobj, &wi_auto_attr.attr);
--
2.52.0