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> Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org |
||
|---|---|---|
| .. | ||
| cik_event_interrupt.c | ||
| cik_int.h | ||
| cik_regs.h | ||
| cwsr_trap_handler.h | ||
| cwsr_trap_handler_gfx8.asm | ||
| cwsr_trap_handler_gfx9.asm | ||
| cwsr_trap_handler_gfx10.asm | ||
| Kconfig | ||
| kfd_chardev.c | ||
| kfd_crat.c | ||
| kfd_crat.h | ||
| kfd_dbgdev.c | ||
| kfd_dbgdev.h | ||
| kfd_dbgmgr.c | ||
| kfd_dbgmgr.h | ||
| kfd_debugfs.c | ||
| kfd_device.c | ||
| kfd_device_queue_manager.c | ||
| kfd_device_queue_manager.h | ||
| kfd_device_queue_manager_cik.c | ||
| kfd_device_queue_manager_v9.c | ||
| kfd_device_queue_manager_v10.c | ||
| kfd_device_queue_manager_vi.c | ||
| kfd_doorbell.c | ||
| kfd_events.c | ||
| kfd_events.h | ||
| kfd_flat_memory.c | ||
| kfd_int_process_v9.c | ||
| kfd_interrupt.c | ||
| kfd_iommu.c | ||
| kfd_iommu.h | ||
| kfd_kernel_queue.c | ||
| kfd_kernel_queue.h | ||
| kfd_module.c | ||
| kfd_mqd_manager.c | ||
| kfd_mqd_manager.h | ||
| kfd_mqd_manager_cik.c | ||
| kfd_mqd_manager_v9.c | ||
| kfd_mqd_manager_v10.c | ||
| kfd_mqd_manager_vi.c | ||
| kfd_packet_manager.c | ||
| kfd_packet_manager_v9.c | ||
| kfd_packet_manager_vi.c | ||
| kfd_pasid.c | ||
| kfd_pm4_headers.h | ||
| kfd_pm4_headers_ai.h | ||
| kfd_pm4_headers_diq.h | ||
| kfd_pm4_headers_vi.h | ||
| kfd_pm4_opcodes.h | ||
| kfd_priv.h | ||
| kfd_process.c | ||
| kfd_process_queue_manager.c | ||
| kfd_queue.c | ||
| kfd_topology.c | ||
| kfd_topology.h | ||
| Makefile | ||
| soc15_int.h | ||