From 3db8ce35c37b62d27e7656fe5e7d2d2865002045 Mon Sep 17 00:00:00 2001 From: "Robert P. J. Day" Date: Thu, 10 Apr 2008 02:11:24 -0700 Subject: af_iucv: Use non-deprecated __RW_LOCK_UNLOCKED macro. Signed-off-by: Robert P. J. Day Signed-off-by: Ursula Braun Signed-off-by: David S. Miller --- net/iucv/af_iucv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'net/iucv') diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c index fee22caf1bad..7b0038f45b16 100644 --- a/net/iucv/af_iucv.c +++ b/net/iucv/af_iucv.c @@ -53,7 +53,7 @@ static int iucv_callback_connreq(struct iucv_path *, u8 ipvmid[8], static void iucv_callback_connrej(struct iucv_path *, u8 ipuser[16]); static struct iucv_sock_list iucv_sk_list = { - .lock = RW_LOCK_UNLOCKED, + .lock = __RW_LOCK_UNLOCKED(iucv_sk_list.lock), .autobind_name = ATOMIC_INIT(0) }; -- cgit v1.2.1 From 9284d6c704b5cfc7f2eb44f81255b4762bcfe4c5 Mon Sep 17 00:00:00 2001 From: Heiko Carstens Date: Thu, 10 Apr 2008 02:12:03 -0700 Subject: iucv: get rid of in_atomic() use. This BUG_ON is not needed, since all (debug) checks are also done in smp_call_function() which gets called by this function. Signed-off-by: Heiko Carstens Signed-off-by: Ursula Braun Signed-off-by: David S. Miller --- net/iucv/iucv.c | 1 - 1 file changed, 1 deletion(-) (limited to 'net/iucv') diff --git a/net/iucv/iucv.c b/net/iucv/iucv.c index d764f4c1b7e4..a65e69eaea2f 100644 --- a/net/iucv/iucv.c +++ b/net/iucv/iucv.c @@ -795,7 +795,6 @@ int iucv_path_connect(struct iucv_path *path, struct iucv_handler *handler, union iucv_param *parm; int rc; - BUG_ON(in_atomic()); spin_lock_bh(&iucv_table_lock); iucv_cleanup_queue(); parm = iucv_param[smp_processor_id()]; -- cgit v1.2.1 From 2d7bf36746b6329d9d54c6c6efe2b55666dd1f53 Mon Sep 17 00:00:00 2001 From: Cornelia Huck Date: Thu, 10 Apr 2008 02:12:45 -0700 Subject: iucv: Delay bus registration until core is ready. 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 Signed-off-by: Heiko Carstens Signed-off-by: Ursula Braun Signed-off-by: David S. Miller --- net/iucv/iucv.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'net/iucv') diff --git a/net/iucv/iucv.c b/net/iucv/iucv.c index a65e69eaea2f..918970762131 100644 --- a/net/iucv/iucv.c +++ b/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: -- cgit v1.2.1