aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2021-04-12 23:06:22 +0200
committerAleksander Morgado <aleksander@aleksander.es>2021-04-12 23:39:35 +0200
commit3d5a994ca8d8e766fd87a85d346c5b21f5e6c53e (patch)
tree66e8b9615163861d4e27a385d56b0fdc60eb5cdd
parentb978a7045fe26f31f88acb9a1a2300cbcdfcac78 (diff)
kerneldevice: fix segfault when processing event for non-existing port
ModemManager[6954]: <warn> [1618260091.319919] [br0] invalid sysfs path read for net/br0 ** ERROR:kerneldevice/mm-kernel-device-generic.c:235:ptr_array_add_sysfs_attribute_link_basename: assertion failed: (array && sysfs_path && attribute) Bail out! ERROR:kerneldevice/mm-kernel-device-generic.c:235:ptr_array_add_sysfs_attribute_link_basename: assertion failed: (array && sysfs_path && attribute) Thread 1 "ModemManager" received signal SIGABRT, Aborted. (gdb) bt #0 0x00007ffff7438ef5 in raise () at /usr/lib/libc.so.6 #1 0x00007ffff7422862 in abort () at /usr/lib/libc.so.6 #2 0x00007ffff76c2084 in () at /usr/lib/libglib-2.0.so.0 #3 0x00007ffff771d85d in g_assertion_message_expr () at /usr/lib/libglib-2.0.so.0 #4 0x00005555556a5337 in ptr_array_add_sysfs_attribute_link_basename (array=0x5555557de520, sysfs_path=0x0, attribute=0x555555703bd8 "driver", out_value=0x0) at kerneldevice/mm-kernel-device-generic.c:235 #5 0x00005555556a542b in preload_contents_other (self=0x5555557a6c60) at kerneldevice/mm-kernel-device-generic.c:255 #6 0x00005555556a6485 in preload_contents (self=0x5555557a6c60) at kerneldevice/mm-kernel-device-generic.c:517 #7 0x00005555556a7fb6 in check_preload (self=0x5555557a6c60) at kerneldevice/mm-kernel-device-generic.c:980 #8 0x00005555556a855f in initable_init (initable=0x5555557a6c60, cancellable=0x0, error=0x7fffffffe5c8) at kerneldevice/mm-kernel-device-generic.c:1127 #9 0x00007ffff78a2f41 in g_initable_new_valist () at /usr/lib/libgio-2.0.so.0 #10 0x00007ffff78a2ffa in g_initable_new () at /usr/lib/libgio-2.0.so.0 #11 0x00005555556a8205 in mm_kernel_device_generic_new_with_rules (props=0x5555557a5fa0, rules=0x7fffec001e30, error=0x7fffffffe5c8) at kerneldevice/mm-kernel-device-generic.c:1042 #12 0x00005555556a827d in mm_kernel_device_generic_new (props=0x5555557a5fa0, error=0x7fffffffe5c8) at kerneldevice/mm-kernel-device-generic.c:1063 #13 0x00005555555aba9c in handle_kernel_event (self=0x555555793220, properties=0x5555557a5fa0, error=0x7fffffffe5c8) at mm-base-manager.c:414
-rw-r--r--src/kerneldevice/mm-kernel-device-generic.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/kerneldevice/mm-kernel-device-generic.c b/src/kerneldevice/mm-kernel-device-generic.c
index 62bf9cf2..58316e78 100644
--- a/src/kerneldevice/mm-kernel-device-generic.c
+++ b/src/kerneldevice/mm-kernel-device-generic.c
@@ -501,8 +501,10 @@ preload_contents (MMKernelDeviceGeneric *self)
return;
preload_sysfs_path (self);
- bus_subsys = find_device_bus_subsystem (self);
+ if (!self->priv->sysfs_path)
+ return;
+ bus_subsys = find_device_bus_subsystem (self);
if (g_strcmp0 (bus_subsys, "usb") == 0)
preload_contents_usb (self);
else if (g_strcmp0 (bus_subsys, "pcmcia") == 0)