drm/amdkfd: Fix memory leaks in kfd topology
Kobject created using kobject_create_and_add() can be freed using kobject_put() when there is no referenece any more. However, kobject memory allocated with kzalloc() has to set up a release callback in order to free it when the counter decreases to 0. Otherwise it causes memory leak. Signed-off-by: Yong Zhao <yong.zhao@amd.com> Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> Reviewed-by: Oded Gabbay <oded.gabbay@gmail.com> Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
This commit is contained in:
parent
d63f0ba27a
commit
5108d76840
|
@ -501,11 +501,17 @@ static ssize_t sysprops_show(struct kobject *kobj, struct attribute *attr,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void kfd_topology_kobj_release(struct kobject *kobj)
|
||||
{
|
||||
kfree(kobj);
|
||||
}
|
||||
|
||||
static const struct sysfs_ops sysprops_ops = {
|
||||
.show = sysprops_show,
|
||||
};
|
||||
|
||||
static struct kobj_type sysprops_type = {
|
||||
.release = kfd_topology_kobj_release,
|
||||
.sysfs_ops = &sysprops_ops,
|
||||
};
|
||||
|
||||
|
@ -541,6 +547,7 @@ static const struct sysfs_ops iolink_ops = {
|
|||
};
|
||||
|
||||
static struct kobj_type iolink_type = {
|
||||
.release = kfd_topology_kobj_release,
|
||||
.sysfs_ops = &iolink_ops,
|
||||
};
|
||||
|
||||
|
@ -568,6 +575,7 @@ static const struct sysfs_ops mem_ops = {
|
|||
};
|
||||
|
||||
static struct kobj_type mem_type = {
|
||||
.release = kfd_topology_kobj_release,
|
||||
.sysfs_ops = &mem_ops,
|
||||
};
|
||||
|
||||
|
@ -607,6 +615,7 @@ static const struct sysfs_ops cache_ops = {
|
|||
};
|
||||
|
||||
static struct kobj_type cache_type = {
|
||||
.release = kfd_topology_kobj_release,
|
||||
.sysfs_ops = &cache_ops,
|
||||
};
|
||||
|
||||
|
@ -729,6 +738,7 @@ static const struct sysfs_ops node_ops = {
|
|||
};
|
||||
|
||||
static struct kobj_type node_type = {
|
||||
.release = kfd_topology_kobj_release,
|
||||
.sysfs_ops = &node_ops,
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue