static int __init hyper_sysfs_init(void) { int ret; if (!xen_domain()) return -ENODEV; ret = xen_sysfs_type_init(); if (ret) goto out; ret = xen_sysfs_version_init(); if (ret) goto version_out; ret = xen_compilation_init(); if (ret) goto comp_out; ret = xen_sysfs_uuid_init(); if (ret) goto uuid_out; ret = xen_properties_init(); if (ret) goto prop_out; #ifdef CONFIG_XEN_HAVE_VPMU if (xen_initial_domain()) { ret = xen_pmu_init(); if (ret) { sysfs_remove_group(hypervisor_kobj, &xen_properties_group); goto prop_out; } } #endif goto out; prop_out: sysfs_remove_file(hypervisor_kobj, &uuid_attr.attr); uuid_out: sysfs_remove_group(hypervisor_kobj, &xen_compilation_group); comp_out: sysfs_remove_group(hypervisor_kobj, &version_group); version_out: sysfs_remove_file(hypervisor_kobj, &type_attr.attr); out: return ret; }
static int __init hyper_sysfs_init(void) { int ret; if (!xen_domain()) return -ENODEV; ret = xen_sysfs_type_init(); if (ret) goto out; ret = xen_sysfs_version_init(); if (ret) goto version_out; ret = xen_compilation_init(); if (ret) goto comp_out; ret = xen_sysfs_uuid_init(); if (ret) goto uuid_out; ret = xen_properties_init(); if (ret) goto prop_out; ret = xen_vmcoreinfo_init(); if (ret) goto vmcoreinfo_out; goto out; vmcoreinfo_out: xen_properties_destroy(); prop_out: xen_sysfs_uuid_destroy(); uuid_out: xen_compilation_destroy(); comp_out: xen_sysfs_version_destroy(); version_out: xen_sysfs_type_destroy(); out: return ret; }