From e77c644ce287eca95ae0ccde9f6f8b7f21d4f6e0 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Fri, 10 May 2024 10:27:07 +0000 Subject: kernel-device-generic: plug memleak when processing platform ports ptr_array_add_sysfs_attribute_link_basename() already reads the current subsystem, so we should avoid overwriting the pointer. ==1630== 13 bytes in 2 blocks are definitely lost in loss record 270 of 3,092 ==1630== at 0x4842839: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) ==1630== by 0x4A1DDE8: g_malloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6800.1) ==1630== by 0x4A329E3: g_strdup (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6800.1) ==1630== by 0x26128E: ptr_array_add_sysfs_attribute_link_basename (mm-kernel-device-generic.c:244) ==1630== by 0x263FD0: preload_contents_platform (mm-kernel-device-generic.c:314) ==1630== by 0x263FD0: preload_contents (mm-kernel-device-generic.c:549) ==1630== by 0x263FD0: check_preload (mm-kernel-device-generic.c:992) ==1630== by 0x263FD0: initable_init (mm-kernel-device-generic.c:1139) ==1630== by 0x4B6DDB9: g_initable_new_valist (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.6800.1) ==1630== by 0x4B6DE6C: g_initable_new (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.6800.1) ==1630== by 0x262087: mm_kernel_device_generic_new_with_rules (mm-kernel-device-generic.c:1054) ==1630== by 0x17F66F: handle_kernel_event (mm-base-manager.c:689) ==1630== by 0x17F7D2: report_kernel_event_auth_ready (mm-base-manager.c:1238) ==1630== by 0x4BA37D8: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.6800.1) ==1630== by 0x4BA3A1A: ??? (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.6800.1) --- src/kerneldevice/mm-kernel-device-generic.c | 1 - 1 file changed, 1 deletion(-) (limited to 'src') diff --git a/src/kerneldevice/mm-kernel-device-generic.c b/src/kerneldevice/mm-kernel-device-generic.c index 04f0fb1d..81ef962a 100644 --- a/src/kerneldevice/mm-kernel-device-generic.c +++ b/src/kerneldevice/mm-kernel-device-generic.c @@ -314,7 +314,6 @@ preload_contents_platform (MMKernelDeviceGeneric *self, ptr_array_add_sysfs_attribute_link_basename (subsystems, iter, "subsystem", ¤t_subsystem); /* Take first parent with the given platform subsystem as physical device */ - current_subsystem = read_sysfs_attribute_link_basename (iter, "subsystem"); if (!self->priv->physdev_sysfs_path && (g_strcmp0 (current_subsystem, platform) == 0)) { self->priv->physdev_sysfs_path = g_strdup (iter); /* stop traversing as soon as the physical device is found */ -- cgit v1.2.3-70-g09d2