From: Cornelia Huck <cornelia.huck@xxxxxxxxxx> If we register the iucv bus after the infrastructure is ready, userspace can start relying on it when it receives the uevent for the bus. Signed-off-by: Cornelia Huck <cornelia.huck@xxxxxxxxxx> Signed-off-by: Heiko Carstens <heiko.carstens@xxxxxxxxxx> Signed-off-by: Ursula Braun <braunu@xxxxxxxxxx> --- net/iucv/iucv.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) Index: net-2.6.26-uschi/net/iucv/iucv.c =================================================================== --- net-2.6.26-uschi.orig/net/iucv/iucv.c +++ net-2.6.26-uschi/net/iucv/iucv.c @@ -1608,13 +1608,10 @@ static int __init iucv_init(void) rc = register_external_interrupt(0x4000, iucv_external_interrupt); if (rc) goto out; - rc = bus_register(&iucv_bus); - if (rc) - goto out_int; iucv_root = s390_root_dev_register("iucv"); if (IS_ERR(iucv_root)) { rc = PTR_ERR(iucv_root); - goto out_bus; + goto out_int; } for_each_online_cpu(cpu) { @@ -1634,13 +1631,20 @@ static int __init iucv_init(void) goto out_free; } } - register_hotcpu_notifier(&iucv_cpu_notifier); + rc = register_hotcpu_notifier(&iucv_cpu_notifier); + if (rc) + goto out_free; ASCEBC(iucv_error_no_listener, 16); ASCEBC(iucv_error_no_memory, 16); ASCEBC(iucv_error_pathid, 16); iucv_available = 1; + rc = bus_register(&iucv_bus); + if (rc) + goto out_cpu; return 0; +out_cpu: + unregister_hotcpu_notifier(&iucv_cpu_notifier); out_free: for_each_possible_cpu(cpu) { kfree(iucv_param[cpu]); @@ -1649,8 +1653,6 @@ out_free: iucv_irq_data[cpu] = NULL; } s390_root_dev_unregister(iucv_root); -out_bus: - bus_unregister(&iucv_bus); out_int: unregister_external_interrupt(0x4000, iucv_external_interrupt); out: -- -- To unsubscribe from this list: send the line "unsubscribe linux-s390" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html