Message ID | 20080925110907.GA22433@osiris.boeblingen.de.ibm.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Heiko Carstens <heiko.carstens@de.ibm.com> Date: Thu, 25 Sep 2008 13:09:07 +0200 > iucv: Fix mismerge again. ... > fb65a7c091529bfffb1262515252c0d0f6241c5c ("iucv: Fix bad merging.") fixed > a merge error, but in a wrong way. We now end up with the bug below. > This patch corrects the mismerge like it was intended. > > BUG: scheduling while atomic: swapper/1/0x00000000 ... > initcall netiucv_init+0x0/0x2c8 returned with preemption imbalance > > Cc: Peter Oberparleiter <peter.oberparleiter@de.ibm.com> > Cc: Ursula Braun <braunu@de.ibm.com> > Cc: Frank Blaschka <frank.blaschka@de.ibm.com> > Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Applied to net-2.6, thanks. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Index: linux-2.6/net/iucv/iucv.c =================================================================== --- linux-2.6.orig/net/iucv/iucv.c +++ linux-2.6/net/iucv/iucv.c @@ -524,7 +524,6 @@ static int iucv_enable(void) get_online_cpus(); for_each_online_cpu(cpu) smp_call_function_single(cpu, iucv_declare_cpu, NULL, 1); - preempt_enable(); if (cpus_empty(iucv_buffer_cpumask)) /* No cpu could declare an iucv buffer. */ goto out_path; @@ -547,7 +546,9 @@ out: */ static void iucv_disable(void) { + get_online_cpus(); on_each_cpu(iucv_retrieve_cpu, NULL, 1); + put_online_cpus(); kfree(iucv_path_table); }