public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [2.5.33] bad: schedule() with irqs disabled!
@ 2002-09-03 13:36 Morten Helgesen
  2002-09-03 14:52 ` [PATCH] " Robert Love
  0 siblings, 1 reply; 2+ messages in thread
From: Morten Helgesen @ 2002-09-03 13:36 UTC (permalink / raw)
  To: linux-kernel

Hey guys, 

got this one on my Inspiron 2500 - and still can`t see
a fix in Linus` bk-tree. Do people agree that do_softirq() is
the bad guy ? Anyone looking into this ? I haven`t got the time
right now as I am both trying to figure out the qlogicisp.c mess 
and trying to get a working i81x framebuffer in 2.5.33. But I do 
think it is time we get it fixed.

bad: schedule() with irqs disabled!
c1c05e2c c025c540 c11605e0 c1c05e54 c0111fd8 00000005 c03139d8 fffffffa
c1c05e50 00000046 c1c05e64 c0111fef c11605e0 00000000 c03139c0 c011a170
c1c04000 00000004 00000000 00000000 00000246 c022e5c0 c02e9460 00000004

Call Trace: 
[try_to_wake_up+256/268]
[wake_up_process+11/16]
[do_softirq+160/172]
[tcp_recvmsg+2124/2372]
[inet_recvmsg+61/84]
[_recvfrom+144/272]
[smb_get_length+22/172]
[smb_receive_header+69/236]
[smb_request_recv+106/462]
[smbiod_doio+28/160]
[smbiod+358/436]
[smbiod+0/436]
[default_wake_function+0/52]
[kernel_thread_helper+5/12]

== Morten

-- 

"Livet er ikke for nybegynnere" - sitat fra en klok person.

mvh
Morten Helgesen 
UNIX System Administrator & C Developer 
Nextframe AS
admin@nextframe.net / 93445641
http://www.nextframe.net

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [PATCH] bad: schedule() with irqs disabled!
  2002-09-03 13:36 [2.5.33] bad: schedule() with irqs disabled! Morten Helgesen
@ 2002-09-03 14:52 ` Robert Love
  0 siblings, 0 replies; 2+ messages in thread
From: Robert Love @ 2002-09-03 14:52 UTC (permalink / raw)
  To: torvalds; +Cc: linux-kernel, morten.helgesen

On Tue, 2002-09-03 at 09:36, Morten Helgesen wrote:

> bad: schedule() with irqs disabled!

OK, Linus, you are right... there are enough instances of this we are
not going to find them all (although I suspect Andrew's slab.c fixes
will cover most of the cases).  Further, I think we can should actually
purposely call preempt_schedule() in certain cases after interrupt
reenable to check for reschedules...

Let's just make it a rule "no preemption if interrupts are off" and
enforce that.

Patch is against 2.5.33-BK, please apply.

	Robert Love

diff -urN linux-2.5.33/kernel/sched.c linux/kernel/sched.c
--- linux-2.5.33/kernel/sched.c	Sat Aug 31 18:04:53 2002
+++ linux/kernel/sched.c	Tue Sep  3 10:48:56 2002
@@ -1032,15 +1032,12 @@
 {
 	struct thread_info *ti = current_thread_info();
 
-	if (unlikely(ti->preempt_count))
+	/*
+	 * If there is a non-zero preempt_count or interrupts are disabled,
+	 * we do not want to preempt the current task.  Just return..
+	 */
+	if (unlikely(ti->preempt_count || irqs_disabled()))
 		return;
-	if (unlikely(irqs_disabled())) {
-		preempt_disable();
-		printk("bad: schedule() with irqs disabled!\n");
-		show_stack(NULL);
-		preempt_enable_no_resched();
-		return;
-	}
 
 need_resched:
 	ti->preempt_count = PREEMPT_ACTIVE;


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2002-09-03 14:48 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-09-03 13:36 [2.5.33] bad: schedule() with irqs disabled! Morten Helgesen
2002-09-03 14:52 ` [PATCH] " Robert Love

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox