在 2025/3/5 11:26, Qi Zheng 写道:
On 3/5/25 11:17 AM, Muchun Song wrote:
On Mar 5, 2025, at 10:01, Liu Ye <liuye@xxxxxxxxxx> wrote:
After calling debugfs_change_name function, the return value should be
checked and the old name restored. If debugfs_change_name fails, the new
name memory should be freed.
Seems it is not a big problem, no memory leak at least. The effect is that
the shrinker->name is not consistent with the name displayed in debugfs.
Right? But the improvement LGTM. So:
Right, so the subject needs to be changed.
Maybe:
mm: shrinker: fix name consistency issue in shrinker_debugfs_rename()
?
I will send a new patch using this subject later.
And add Reviewed-by:Qi Zheng <zhengqi.arch@xxxxxxxxxxxxx> ?
BTW, it seems that the callers of shrinker_debugfs_rename() did not
process the return value of the function?
Yes, At the same time, I also found that many positions using
debugfs_change_name did not determine the return value.
Thanks.
Reviewed-by: Muchun Song <muchun.song@xxxxxxxxx>
Thanks.
Signed-off-by: Liu Ye <liuye@xxxxxxxxxx>
---
mm/shrinker_debug.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/mm/shrinker_debug.c b/mm/shrinker_debug.c
index 794bd433cce0..20eaee3e97f7 100644
--- a/mm/shrinker_debug.c
+++ b/mm/shrinker_debug.c
@@ -214,10 +214,14 @@ int shrinker_debugfs_rename(struct shrinker *shrinker, const char *fmt, ...)
ret = debugfs_change_name(shrinker->debugfs_entry, "%s-%d",
shrinker->name, shrinker->debugfs_id);
+ if (ret) {
+ shrinker->name = old;
+ kfree_const(new);
+ } else {
+ kfree_const(old);
+ }
mutex_unlock(&shrinker_mutex);
- kfree_const(old);
-
return ret;
}
EXPORT_SYMBOL(shrinker_debugfs_rename);
--
2.25.1