In sq_dev_add(), sq_kobject[cpu] is dynamically allocated with
kzalloc_obj() and initialized with ktype_percpu_entry. When
sq_dev_remove() calls kobject_put(kobj), the kobject is never freed
because ktype_percpu_entry lacks a .release callback.
Provide a sq_kobj_release() callback that calls kfree(kobj).
Fixes: d7c30c682a27 ("sh: Store Queue API rework.")
Assisted-by: Antigravity:gemini-3.1-pro
Signed-off-by: Ian Rogers <[email protected]>
---
arch/sh/kernel/cpu/sh4/sq.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/sh/kernel/cpu/sh4/sq.c b/arch/sh/kernel/cpu/sh4/sq.c
index 908a8e09113b..f33864958487 100644
--- a/arch/sh/kernel/cpu/sh4/sq.c
+++ b/arch/sh/kernel/cpu/sh4/sq.c
@@ -331,7 +331,13 @@ static const struct sysfs_ops sq_sysfs_ops = {
.store = sq_sysfs_store,
};
+static void sq_kobj_release(struct kobject *kobj)
+{
+ kfree(kobj);
+}
+
static struct kobj_type ktype_percpu_entry = {
+ .release = sq_kobj_release,
.sysfs_ops = &sq_sysfs_ops,
.default_groups = sq_sysfs_groups,
};
--
2.56.0.385.gd3acb90ef8-goog