Message ID | 20200620085407.21922-1-bernard@vivo.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] drm/amd: fix potential memleak in err branch | expand |
Am 2020-06-20 um 4:54 a.m. schrieb Bernard Zhao: > The function kobject_init_and_add alloc memory like: > kobject_init_and_add->kobject_add_varg->kobject_set_name_vargs > ->kvasprintf_const->kstrdup_const->kstrdup->kmalloc_track_caller > ->kmalloc_slab, in err branch this memory not free. If use > kmemleak, this path maybe catched. > These changes are to add kobject_put in kobject_init_and_add > failed branch, fix potential memleak. > > Signed-off-by: Bernard Zhao <bernard@vivo.com> The patch is Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> I'll apply it to amd-staging-drm-next. Thanks, Felix > --- > Changes since V1: > *Remove duplicate changed file kfd_topology.c, this file`s fix > already applied to the main line. > --- > drivers/gpu/drm/amd/amdkfd/kfd_process.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c > index d27221ddcdeb..5ee4d6cfb16d 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c > @@ -124,6 +124,7 @@ void kfd_procfs_init(void) > if (ret) { > pr_warn("Could not create procfs proc folder"); > /* If we fail to create the procfs, clean up */ > + kobject_put(procfs.kobj); > kfd_procfs_shutdown(); > } > } > @@ -428,6 +429,7 @@ struct kfd_process *kfd_create_process(struct file *filep) > (int)process->lead_thread->pid); > if (ret) { > pr_warn("Creating procfs pid directory failed"); > + kobject_put(process->kobj); > goto out; > } >
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c index d27221ddcdeb..5ee4d6cfb16d 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c @@ -124,6 +124,7 @@ void kfd_procfs_init(void) if (ret) { pr_warn("Could not create procfs proc folder"); /* If we fail to create the procfs, clean up */ + kobject_put(procfs.kobj); kfd_procfs_shutdown(); } } @@ -428,6 +429,7 @@ struct kfd_process *kfd_create_process(struct file *filep) (int)process->lead_thread->pid); if (ret) { pr_warn("Creating procfs pid directory failed"); + kobject_put(process->kobj); goto out; }
The function kobject_init_and_add alloc memory like: kobject_init_and_add->kobject_add_varg->kobject_set_name_vargs ->kvasprintf_const->kstrdup_const->kstrdup->kmalloc_track_caller ->kmalloc_slab, in err branch this memory not free. If use kmemleak, this path maybe catched. These changes are to add kobject_put in kobject_init_and_add failed branch, fix potential memleak. Signed-off-by: Bernard Zhao <bernard@vivo.com> --- Changes since V1: *Remove duplicate changed file kfd_topology.c, this file`s fix already applied to the main line. --- drivers/gpu/drm/amd/amdkfd/kfd_process.c | 2 ++ 1 file changed, 2 insertions(+)