diff --recursive --unified hal-0.5.11-orig/hald/linux/device.c hal-0.5.11-fixed/hald/linux/device.c --- hal-0.5.11-orig/hald/linux/device.c 2008-05-08 03:23:42.000000000 +0400 +++ hal-0.5.11-fixed/hald/linux/device.c 2008-06-20 01:03:54.000000000 +0400 @@ -4495,9 +4495,12 @@ for (tmp = children; tmp != NULL; tmp = g_slist_next (tmp)) { child = HAL_DEVICE (tmp->data); - HAL_INFO(("Remove now: %s as child of: %s", hal_device_get_udi(child), hal_device_get_udi(d))); - hal_util_callout_device_remove (child, dev_callouts_remove_child_done, NULL, NULL); - } + /* find childs without sysfs path as e.g. spawned devices*/ + if (hal_device_property_get_string(child, "linux.sysfs_path") == NULL) { + HAL_INFO(("Remove now: %s as child of: %s", hal_device_get_udi(child), hal_device_get_udi(d))); + hal_util_callout_device_remove (child, dev_callouts_remove_child_done, NULL, NULL); + } + } g_slist_free (children); handler->remove (d);