|
@@ -2038,16 +2038,16 @@ static int __init iucv_init(void)
|
|
rc = cpuhp_setup_state(CPUHP_NET_IUCV_PREPARE, "net/iucv:prepare",
|
|
rc = cpuhp_setup_state(CPUHP_NET_IUCV_PREPARE, "net/iucv:prepare",
|
|
iucv_cpu_prepare, iucv_cpu_dead);
|
|
iucv_cpu_prepare, iucv_cpu_dead);
|
|
if (rc)
|
|
if (rc)
|
|
- goto out_free;
|
|
|
|
|
|
+ goto out_dev;
|
|
rc = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "net/iucv:online",
|
|
rc = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "net/iucv:online",
|
|
iucv_cpu_online, iucv_cpu_down_prep);
|
|
iucv_cpu_online, iucv_cpu_down_prep);
|
|
if (rc < 0)
|
|
if (rc < 0)
|
|
- goto out_free;
|
|
|
|
|
|
+ goto out_prep;
|
|
iucv_online = rc;
|
|
iucv_online = rc;
|
|
|
|
|
|
rc = register_reboot_notifier(&iucv_reboot_notifier);
|
|
rc = register_reboot_notifier(&iucv_reboot_notifier);
|
|
if (rc)
|
|
if (rc)
|
|
- goto out_free;
|
|
|
|
|
|
+ goto out_remove_hp;
|
|
ASCEBC(iucv_error_no_listener, 16);
|
|
ASCEBC(iucv_error_no_listener, 16);
|
|
ASCEBC(iucv_error_no_memory, 16);
|
|
ASCEBC(iucv_error_no_memory, 16);
|
|
ASCEBC(iucv_error_pathid, 16);
|
|
ASCEBC(iucv_error_pathid, 16);
|
|
@@ -2061,11 +2061,11 @@ static int __init iucv_init(void)
|
|
|
|
|
|
out_reboot:
|
|
out_reboot:
|
|
unregister_reboot_notifier(&iucv_reboot_notifier);
|
|
unregister_reboot_notifier(&iucv_reboot_notifier);
|
|
-out_free:
|
|
|
|
- if (iucv_online)
|
|
|
|
- cpuhp_remove_state(iucv_online);
|
|
|
|
|
|
+out_remove_hp:
|
|
|
|
+ cpuhp_remove_state(iucv_online);
|
|
|
|
+out_prep:
|
|
cpuhp_remove_state(CPUHP_NET_IUCV_PREPARE);
|
|
cpuhp_remove_state(CPUHP_NET_IUCV_PREPARE);
|
|
-
|
|
|
|
|
|
+out_dev:
|
|
root_device_unregister(iucv_root);
|
|
root_device_unregister(iucv_root);
|
|
out_int:
|
|
out_int:
|
|
unregister_external_irq(EXT_IRQ_IUCV, iucv_external_interrupt);
|
|
unregister_external_irq(EXT_IRQ_IUCV, iucv_external_interrupt);
|